0
我正在創建一個plslq程序。因爲查詢需要根據指定的表名動態生成。我能夠在一個變量中生成查詢。我的問題是如何使用plsql在變量中執行查詢。執行/執行立即在此處不起作用。執行變量拋出錯誤
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;
/
如何完成此任務。我只需要執行查詢。
好吧,你得到什麼錯誤?你的結果需要以某種方式返回。 – OldProgrammer
簡單地「執行」SELECT語句沒有意義。你必須要用它做點什麼。那麼,你是否想將所有數據讀入一個類型,返回一個打開的光標等? – Ben