1

スクリプトの彼の部分を実行しようとすると、Oracle 11G で「PL/SQL: ORA-00942: テーブルまたはビューが存在しません」というエラーが発生します。select ステートメントがカーソルから変数の名前を解析していないようです。これがカーソルからテーブル名変数を読み取れるようにするために助けが必要です。

DECLARE
  ITEM_ERROR     NUMBER;
  CNT_SITE       VARCHAR2(46);

  CURSOR C_SITEID IS
     SELECT OBJECTNAME,ATTRIBUTENAME FROM MAXATTRIBUTE    WHERE ATTRIBUTENAME LIKE 'SITE%'   GROUP BY OBJECTNAME,ATTRIBUTENAME, COLUMNNAME;            
     SITEIDRec    C_SITEID%RowType;

 BEGIN
 BEGIN
 OPEN C_SITEID;
 LOOP
   FETCH C_SITEID into SITEIDRec;
   EXIT WHEN C_SITEID %NOTFOUND;
       BEGIN  
         SELECT COUNT(SITEID) into CNT_SITE FROM SITEIDRec.OBJECTNAME
          WHERE  SITEID  IN ('COLLEGE NANO SCI ENG-TGCM','FREESCALE-BALAZS','TGCM-GLOBAL FOUNDRIES','INTL RECTIFIER-TGM','TGCM-DMOS5','TGCM-IMFT','TGCM-TRIQUINT','GP-TRIQUINT');
       EXCEPTION
          WHEN NO_DATA_FOUND THEN NULL;
       END;
 END LOOP;
 --COMMIT;
 CLOSE C_SITEID;
 --COMMIT;
 EXCEPTION
    WHEN NO_DATA_FOUND THEN NULL;
 END;
 --COMMIT;
  EXCEPTION
    WHEN OTHERS THEN
    MSG_TEXT := SUBSTR(SQLERRM,1,200);
  --COMMIT;
   raise;
END;
4

1 に答える 1

4

FROM TableName あなたのクエリに欠けていると思うので、それは当然のことです。

SELECT COUNT(SITEID) into SITEIDRec.OBJECTNAME
      WHERE SITEID IN 
             ('COLLEGE NANO SCI ENG-TGCM','FREESCALE-BALAZS',
               'TGCM-GLOBAL FOUNDRIES','INTL RECTIFIER-TGM','TGCM-DMOS5',
               'TGCM-IMFT','TGCM-TRIQUINT','GP-TRIQUINT');

を追加してクエリを修正してくださいFrom TableName

編集:以下のように使用EXECUTE IMMEDIATEしてみてください

 EXECUTE IMMEDIATE 'SELECT COUNT(SITEID) into CNT_SITE FROM ' 
                    || SITEIDRec.OBJECTNAME ||
         ' WHERE SITEID IN (''COLLEGE NANO SCI ENG-TGCM'',''FREESCALE-BALAZS'',
               ''TGCM-GLOBAL FOUNDRIES'',''INTL RECTIFIER-TGM'',''TGCM-DMOS5'',
               ''TGCM-IMFT'',''TGCM-TRIQUINT'',''GP-TRIQUINT'')';
于 2012-11-05T17:05:21.827 に答える