create or replace procedure create_table as 
begin
execute immediate '
create table student(id number,name varchar2(10),salary number)';
execute immediate 'insert into student values(100,"jacky",10000)';
execute immediate 'insert into student values(101,"rose",20000)';
execute immediate 'insert into student values(102,"john",8000)';
end create_table;
exec create_table;
ORA-00984: 列在此处不允许
ORA-06512: 在 "SYSTEM.CREATE_TABLE", line 5
ORA-06512: 在 line 2表是创建成功了  ,但数据不能插进去

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE create_table AS
    BEGIN
      EXECUTE IMMEDIATE '
    create table student(id number,name varchar2(10),salary number)';
      EXECUTE IMMEDIATE 'insert into student values(100,''jacky'',10000)';--是两个单引号,不是双引号
      EXECUTE IMMEDIATE 'insert into student values(101,''rose'',20000)';--是两个单引号,不是双引号
      EXECUTE IMMEDIATE 'insert into student values(102,''john'',8000)';--是两个单引号,不是双引号
    --在一个引号的字符串中,两个单引号表示一个引号
    END create_table;