8.0.5不支持这种用法,只能通过dbms_sql包来完成
例:
在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;

解决方案 »

  1.   

    805不支持ecec immediate;
    需要用dbms_sql
      

  2.   

    还没有这个功能的,新增的,用dbms_sql
      

  3.   

    只有在oracle8i以上的版本才可用本地sql
      

  4.   

    如果表名是变量,字段名也是变量,即是整个sql有很多变量在8.05中怎样实现
      

  5.   

    在parse的时候可以将变量直接带入,不用bind。
    例如:
    DBMS_SQL.PARSE(cursor_name, 'DELETE FROM emp WHERE sal > '||var_x,
                       dbms_sql.native);
    变量多也是一样的啦。