1. 直接写过程名称.  procedure_name(...); 2. 动态执行
  Execute immediate 'create table...';

解决方案 »

  1.   

    Execute immediate 'sql语句'???哪和直接使用sql语句有什么区别呢?
    难道说execute immediate 'create table' 能直接放在begin ...end 块里面?
      

  2.   

    EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。 
    在PL/SQL运行DDL语句
     begin
      execute immediate 'set role all';
     end;
      

  3.   

    在过程是不能使用DML语句或是DDL语句,如果要使用就得用动态SQL,即在begin……end中就用 EXECUTE IMMEDIATE ‘SQL’来执行。