如表名为:test请问,如何利用存储过程创建一个表?如何利用存储过程给一个表添加字段?如何创建视图?并返回创建成功,或创建失败的信息。如:返回 1,表示成功,返回0表示失败。

解决方案 »

  1.   

    create or replace function crtb
    return number 
    is 
    begin
      execute immediate 'create table testt(
    id number(8),
    name varchar2(10))';
      return 1;
    exception
       when others then
       return 0;
    end;
    /要返回值好像还只能写成函数呢.你可以执行SELECT crtb FROM DUAL;来看返回的是什么值.
      

  2.   

    VIEW的创建一般就是:
    create view view_name as
    select ......
      

  3.   

    在过程中给表加字段也是要用execute immediate 'alter table testt add .....';来实现
      

  4.   

    用动态SQL   
    begin
    execute immediate 'create table a(id number,name varchar2(10))';
    end;
    SQL> begin
      2  execute immediate 'create table a(id number,name varchar2(10))';
      3  end;
      4  /PL/SQL 过程已成功完成。SQL> desc a
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     ID                                                 NUMBER
     NAME                                               VARCHAR2(10)
      

  5.   

    应该使用动态SQL
    楼上的可以用 
    偶来晚了
      

  6.   

    execute immediate
    如果更动态的需要使用 dbms_sql包
      

  7.   

    在procedure中想用ddl,就必须用execute immediat
      

  8.   

    create or replace procedure protest
    as
    exp exception;
    begin
      execute immediate 'create table test(id number,name varchar(20))';
      execute immediate 'insert into test(110,'test_name')';
      raise exp;
    exception
      when exp then
      dbms_output.put_line('执行成功1');
      when others then
      dbms_output.put_line('执行失败0');
    end;