不行,execute immediate只能用在oracle8i以上版本
你用dbms_sql()包吧

解决方案 »

  1.   

    在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;
      

  2.   

    多谢,可我就是不想用DBMS_SQL包的,呵呵看来没办法了。