create or replace procedure create_table as
begin
execute immediate
create table student(id number,name varchar2(10),salary number,);insert into student values(100,'jacky',10000);
insert into student values(101,'rose',20000);
insert into student values(102,'john',8000);
end create_table;

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE create_table AS
    BEGIN
      EXECUTE IMMEDIATE 'CREATE TABLE
                        student(id NUMBER, NAME VARCHAR2(10), salary NUMBER)';
      --execute后的sql语句要加单引号,最后一字段多了逗号
      --由于动态创建在存储过程编译时不存在,所以下面插入数据时也要使用动态SQL
      --否则会报表或视图不存在
      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;
      

  2.   

    非常感谢,因为在自学oracle,项目中要用到,所以有好多地方不懂,谢谢你的答案
      

  3.   

    execute immediate
    create table student(id number,name varchar2(10),salary number,);
    这句写错了吧。。 而且建表语句也不对。 怎么还有空的段。。