创建 table 并在脚本中插入数据
Create table and insert data in script
我想做的是创建 table(如果不存在)然后在其中插入数据。当我只创建 table 时,脚本工作正常,但当我在脚本中添加插入时,脚本工作正常(错误:table 或插入语句的视图不存在)。我是 Oracle 的新手,我做错了什么?
declare
v_table_exists number;
begin
select count(*)
into v_table_exists
from user_tables
where table_name = upper('my_table');
if v_table_exists = 1
then
execute immediate 'drop table my_table';
end if;
execute immediate 'create table my_table
(my_ID int
my_column int
)';
insert into my_table
(my_ID,
my_column
)
values (1,2);
commit;
end;
您将 运行 遇到的第一个错误是“my_table”不存在。这是因为在解析 PL/SQL 块时,您的 INSERT 语句引用了一个尚不存在的 table,因此您需要将其放入 EXECUTE IMMEDIATE 语句中。
您还需要在 table.
的列定义之间放置一个逗号
见下方功能代码
DECLARE
v_table_exists NUMBER;
BEGIN
SELECT COUNT (*)
INTO v_table_exists
FROM user_tables
WHERE table_name = UPPER ('my_table');
IF v_table_exists = 1
THEN
EXECUTE IMMEDIATE 'drop table my_table';
END IF;
EXECUTE IMMEDIATE 'create table my_table (my_ID int, my_column int)';
EXECUTE IMMEDIATE 'INSERT INTO my_table (my_ID, my_column) VALUES (1, 2)';
COMMIT;
END;
/
我想做的是创建 table(如果不存在)然后在其中插入数据。当我只创建 table 时,脚本工作正常,但当我在脚本中添加插入时,脚本工作正常(错误:table 或插入语句的视图不存在)。我是 Oracle 的新手,我做错了什么?
declare
v_table_exists number;
begin
select count(*)
into v_table_exists
from user_tables
where table_name = upper('my_table');
if v_table_exists = 1
then
execute immediate 'drop table my_table';
end if;
execute immediate 'create table my_table
(my_ID int
my_column int
)';
insert into my_table
(my_ID,
my_column
)
values (1,2);
commit;
end;
您将 运行 遇到的第一个错误是“my_table”不存在。这是因为在解析 PL/SQL 块时,您的 INSERT 语句引用了一个尚不存在的 table,因此您需要将其放入 EXECUTE IMMEDIATE 语句中。
您还需要在 table.
的列定义之间放置一个逗号见下方功能代码
DECLARE
v_table_exists NUMBER;
BEGIN
SELECT COUNT (*)
INTO v_table_exists
FROM user_tables
WHERE table_name = UPPER ('my_table');
IF v_table_exists = 1
THEN
EXECUTE IMMEDIATE 'drop table my_table';
END IF;
EXECUTE IMMEDIATE 'create table my_table (my_ID int, my_column int)';
EXECUTE IMMEDIATE 'INSERT INTO my_table (my_ID, my_column) VALUES (1, 2)';
COMMIT;
END;
/