sqlstr是你要执行的语句execute immediate sqlstr;这样用就是了,必须8i以后的版本才能用

解决方案 »

  1.   

    execute immediate的意思就是db在执行该sqlstr语句的时候,不会对sql语句进行语法分析,而直接执行
      

  2.   

    回答:
    execute immediate只能完成一些简单的语句,而且语句中不能传入变量
    dbms_sql则是全面的,所有的动态sql都可以完成
    可以把execute immediate理解为dbms_sql的简版。
      

  3.   

    在form(oracle develop)工具中可以用execute immediate吗?
    如何判断执行成功还是失败,是不是用exception when others
    才能判断出来
      

  4.   

    execute immediate 的效率较高。
    其实他已经可以在高版本的oracle中代替dbms_sql。dbms_sql使用比较麻烦。
      

  5.   

    有没有谁知道oracle develop开发工具中怎么使用动态SQL
      

  6.   

    没有用过oracle develop开发工具。
    这些语句都是pl/sql,pl/sql在oracle develop开发工具中怎么用的就怎么用这个。
      

  7.   

    TO jiezhi(西域浪子):
    在develop form中用dbms_sql编译出错!
    declare
       cursor_name integer;
       v_rows      integer;
    begin
       cursor_name := DBMS_SQL.OPEN_CURSOR;
       DBMS_SQL.PARSE(cursor_name, 'update tmp_aa set a1=11', dbms_sql.v7);
       v_rows := DBMS_SQL.EXECUTE(cursor_name);
       DBMS_SQL.CLOSE_CURSOR(cursor_name);
    end;----------------
    v7 must be declared
      

  8.   

    我来澄清一些问题
    1、execute immediate的效率比dbms_sql低
    这是因为execute immediate每次都要进行语句的软分析,所以效率低,所以execute immediate不适合放到循环中。如果不信,自己做测试。
    2、execute immediate可以使用变量
    如execute immediate 'select count(*) from tab where uid=:id' using myid into nums;
    3、dbms_sql包的功能远比execute immediate强大,可以实现动态变量传递。
      

  9.   

    为何不用execute immediate str