本帖最后由 wzming0512 于 2012-06-08 10:59:20 编辑

解决方案 »

  1.   

    把into放外面
    EXECUTE IMMEDIATE 'SELECT NAME INTO QHMC FROM '||TABLENAME||'WHERE CODE = '||PK;
    改为
    EXECUTE IMMEDIATE 'SELECT NAME FROM '||TABLENAME||'WHERE CODE = '||PK
    INTO QHMC 
      

  2.   

    CREATE OR REPLACE FUNCTION GET_DIC_GENERAL (TABLENAME IN VARCHAR2, PK IN VARCHAR2) RETURN VARCHAR2 IS
      QHMC VARCHAR2(200);
    BEGIN  EXECUTE IMMEDIATE 'SELECT NAME FROM '||TABLENAME||'WHERE CODE = '||PK;
      INTO QHMC;  RETURN QHMC;
    END GET_DIC_GENERAL;这样么?可还是报错啊。。FUNCTION CAMS.GET_DIC_GENERAL 编译错误错误:PLS-00103: Encountered the symbol "INTO" when expecting one of the following:
           
              begin case declare end exception exit for goto if loop mod
              null pragma raise return select update while with
              <an identifier> <a double-quoted delimited-identifier>
              <a bind variable> << close current delete fetch lock insert
              open rollback savepoint set sql execute commit forall merge
              <a single-quoted SQL string> pipe
              <an alternatively-quoted SQL string>
           The symbol "INTO" was ignored.
    行:6
    文本:INTO QHMC;写成这样也报错。。CREATE OR REPLACE FUNCTION GET_DIC_GENERAL (TABLENAME IN VARCHAR2, PK IN VARCHAR2) RETURN VARCHAR2 IS
      RESULT INTEGER;
    BEGIN
      EXECUTE IMMEDIATE 'SELECT NAME FROM '||TABLENAME||'WHERE CODE = '||PK;  RETURN RESULT;
    END GET_DIC_GENERAL;
      

  3.   

    CREATE OR REPLACE FUNCTION GET_DIC_GENERAL (TABLENAME IN VARCHAR2, PK IN VARCHAR2) RETURN VARCHAR2 IS
      QHMC VARCHAR2(200);
    BEGIN  EXECUTE IMMEDIATE 'SELECT NAME FROM '||TABLENAME||'WHERE CODE = '||PK;
      INTO QHMC;  RETURN QHMC;
    END GET_DIC_GENERAL;这样么?可还是报错啊。。FUNCTION CAMS.GET_DIC_GENERAL 编译错误错误:PLS-00103: Encountered the symbol "INTO" when expecting one of the following:
        
      begin case declare end exception exit for goto if loop mod
      null pragma raise return select update while with
      <an identifier> <a double-quoted delimited-identifier>
      <a bind variable> << close current delete fetch lock insert
      open rollback savepoint set sql execute commit forall merge
      <a single-quoted SQL string> pipe
      <an alternatively-quoted SQL string>
      The symbol "INTO" was ignored.
    行:6
    文本:INTO QHMC;写成这样也报错。。
    CREATE OR REPLACE FUNCTION GET_DIC_GENERAL (TABLENAME IN VARCHAR2, PK IN VARCHAR2) RETURN VARCHAR2 IS
      RESULT INTEGER;
    BEGIN
      EXECUTE IMMEDIATE 'SELECT NAME FROM '||TABLENAME||'WHERE CODE = '||PK;  RETURN RESULT;
    END GET_DIC_GENERAL;
      

  4.   

    EXECUTE IMMEDIATE 'SELECT NAME FROM '||TABLENAME||'WHERE CODE = '||PK
    这行后面的分号去掉。
      

  5.   

    CREATE OR REPLACE FUNCTION GET_DIC_GENERAL (TABLENAME IN VARCHAR2, PK IN VARCHAR2) RETURN VARCHAR2 IS
      QHMC varchar2(200);
    BEGIN
    STMT VARCHAR2(30);
    QHMC VARCHAR2(20);
    STMT:= 'SELECT NAME FROM '||TABLENAME||'WHERE CODE = '||PK';
      EXECUTE IMMEDIATE  INTO QHMC ;  RETURN QHMC;
    END GET_DIC_GENERAL;