动态SQL,比如你要创建、更改或删除数据库对象(如表)的时候.
eg: execute immediate 'create table test(name char(2))';

解决方案 »

  1.   

    当你在过程或函数中先创建一个表,然后马上就要对这个表进行操作,这时候就必须要用到execute immediate ,否则会提示错误
      

  2.   

    execute immediate的灵活运用,还可以用来传递表名类参数的选择!从而起到执行语句的真真灵活性!
      

  3.   

    比如你写了过程删除表的数据,但是删除哪一个表不确定,要将表名当参数传递. 这时候就要使用动态SQL.
      

  4.   

    是不是在PL/SQL中进行DDL操作的情况下,一定要用到动态SQL,也就是说,要想执行SQL语句,前面一定要加EXECUTE IMMEDITATE ,而如果没有涉及到DDL操作而仅仅是DML操作的情况下,不一定要用EXECUTE IMMEDITATE .