0

plslq プログラムを作成しています。指定されたテーブル名に従って、クエリを動的に生成する必要があります。変数でクエリを生成できます。私の質問は、plsql を使用して変数でクエリを実行する方法です。Execute / Execute Immediate はここでは機能しません。

    DECLARE
      f UTL_FILE.FILE_TYPE;
      s VARCHAR2(200);
      c number:=0;
    query varchar(32767);
    BEGIN
--Reading and getting the value from a text file. The text file contains lot of table names
       f := UTL_FILE.FOPEN('DATADIR_EXP1','Table.txt','R');
      LOOP
       UTL_FILE.GET_LINE(f,s);
       DBMS_OUTPUT.PUT_LINE(s);
       IF C <> 0 THEN
       query := query || ' UNION ALL';
       END IF;
--Query is generated here.
       query := query || ' SELECT '''||s||''' AS TABLE_NAME,MIn(Updated_Time) AS MIN_VALUE,MAX(Updated_Time) AS MAX_VALUE,count(*) AS NUMBER_OF_ROWS FROM ' || s ;
       c:=c+1;
      END LOOP;
     EXCEPTION
        WHEN NO_DATA_FOUND THEN
             UTL_FILE.FCLOSE(f);
             DBMS_OUTPUT.PUT_LINE('Number of lines: ' || c);
    DBMS_OUTPUT.PUT_LINE(query);
-- The problem is here. Execute / Execute Immediate is not working.
    EXECUTE IMMEDIATE(query);
             UTL_FILE.FCLOSE(f);
    END;
    /

このタスクを達成する方法。クエリを実行するだけです。

4

1 に答える 1