版本问题,你的是8.0.5或以前的版本吧?
用dbms_sql包来执行动态sql语句。

解决方案 »

  1.   

    我的是8.0
    dbms_sql包来执行?不大懂。
      

  2.   

    8.0是执行动态sql只能调用包dbms_sql来实现,8i以后的版本才支持这种写法
      

  3.   

    在oracle8.0.5中:
    用dbms_sql来实现
    如:
    CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AS
        cursor_name INTEGER;
        rows_processed INTEGER;
    BEGIN
        cursor_name := dbms_sql.open_cursor;
        DBMS_SQL.PARSE(cursor_name, 'DELETE FROM emp WHERE sal > :x',
                       dbms_sql.native);
        DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', salary);
        rows_processed := dbms_sql.execute(cursor_name);
        DBMS_SQL.close_cursor(cursor_name);
    EXCEPTION
    WHEN OTHERS THEN
        DBMS_SQL.CLOSE_CURSOR(cursor_name);
    END;
      

  4.   

    dbms_sql.execute immediate sqlstr;
    还是不行啊。
      

  5.   

    dbms_sql.execute immediate sqlstr;
    当然不行, bzszp(www.bzszp.533.net) 不是已经写了么?
      

  6.   

    DBMS_SQL.execute(sqlstr)? 也不行。。
      

  7.   

    bzszp(www.bzszp.533.net)的例子是可以的.但
    不知道怎么改成我的.