1.BEGIN SQL: =' .............................';
是不是应该
 BEGIN SQL1: =' .............................';
?2.dbms_sql.NATIVE’换成
  dbms_sql.v7
   

解决方案 »

  1.   

    1.在' .............................'
    是有sql语句的
    如: select sysdate from dual等
    2.dbms_sql.NATIVE’换成
      dbms_sql.v7或者dbms_sql.v6
    都不行!真的没办法!
      

  2.   

    1。
      DECLARE SQL1 VARCHAR2(1000);  BEGIN SQL   / sql1  ?????: =' .............................';  EXECUTE IMMEDIATE SQL1;
      END;在sql*plus下可以正常执行?????
    2。在sql中也不能正确的 哈    DBMS_SQL.PARSE(cursor_name, 'SELECT SYSDATE FROM DUAL',dbms_sql.NATIVE);================================================================ok?
      

  3.   

    1、看一下书吧,查查到底应该怎么写,我的记忆中好象没有IMMEDIATE关键字。
    2、将dbms_sql.NATIVE的执行权限给连接用户,我认为是权限的问题。另外即便有权限也应该设为Public类型。
      

  4.   

    to: wxyq2000(wxyq) 
    1.
    DECLARE SQL1 VARCHAR2(1000);  BEGIN sql1: ='SELECT SYSDATE FROM DUAL';  EXECUTE IMMEDIATE SQL1;
      END;
    这是肯定能够执行的!
    2.
    declare
        cursor_name INTEGER;
        rows_processed INTEGER;
    BEGIN
        cursor_name := dbms_sql.open_cursor;
        DBMS_SQL.PARSE(cursor_name, 'SELECT SYSDATE FROM DUAL',dbms_sql.NATIVE);
        rows_processed := dbms_sql.execute(cursor_name);
        DBMS_SQL.close_cursor(cursor_name);
    END;
    这肯定也是可以执行的了!拜托自己试试好不!!!!!!!
      

  5.   

    to:qiuyang_wang(小数点) 
    1。IMMEDIATE 这个关键字是有的,我查了!
    2。我换了SYSTEM/MANAGER都一样的报错,而且原来的用户是DBATHANK YOU!
      

  6.   

    SQL> declare
      2      cursor_name INTEGER;
      3      rows_processed INTEGER;
      4  BEGIN
      5      cursor_name := dbms_sql.open_cursor;
      6      DBMS_SQL.PARSE(cursor_name, 'SELECT SYSDATE FROM DUAL',dbms_sql.NATIVE);
      7      rows_processed := dbms_sql.execute(cursor_name);
      8      DBMS_SQL.close_cursor(cursor_name);
      9  END;
     10  /PL/SQL 过程已成功完成。你的数据库环境是什么?oracle 版本是多少?
      

  7.   

    我的数据库是8.1.7
    我是说在sql*plus里可以执行的语句到form 6i中却编译不了
      

  8.   

    Oracle8i introduces native dynamic SQL, an alternative to DBMS_SQL. Using native dynamic SQL, you can place dynamic SQL statements directly into PL/SQL blocks.
    Oracle8i介绍了一种本地动态SQL语句,是DBMS_SQL的另一种选择。用本地的动态SQL,你可以直接把动态SQL语句放在PL/SQL块中。另外,我在oracle的帮助文档里查到:
    Note: 
    Because client-side code cannot reference remote package variables or constants, you must explicitly use the values of the constants. For example, the following code does not compile on the client: DBMS_SQL.PARSE(cur_hdl, stmt_str, dbms_sql.V7); -- uses constant 
    dbms_sql.V7The following code works on the client, because the argument is explicitly provided: DBMS_SQL.PARSE(cur_hdl, stmt_str, 2); -- compiles on the client
    意思是在客户端不能引用服务器上的包的参数或常量(指dbms_sql.native是integer 常量,=1)。但是你可以把它替换成常数。
    That is:
    DBMS_SQL.PARSE(cursor_name, 'SELECT SYSDATE FROM DUAL',1);
      

  9.   

    天下有雪:
    你能告诉我第一个EXECUTE  IMMEDIATE  不能执行的原因吗?
      

  10.   

    天下有雪:
    第二个问题我从metalink上问
    他说form6i的pl/sql版本太低!
    建议我用FORMS_DDL
    可是第一个问题他没有给我答案!