创建 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;
/