我在https://dba.stackexchange.com/questions/3587/oracle-automate-export-unload-of-data找到了一个很好的问题。使用这样的结构是否有效:
FOR r IN (SELECT * FROM table) LOOP
UTL_FILE.PUT_LINE(lfFilelog, r.row);
END LOOP;
我正在尝试使用这样的东西:
CREATE OR REPLACE PROCEDURE p_name(DESTFOLDER in varchar2, FILENAME in varchar2)
IS
V_FILEHANDLE UTL_FILE.FILE_TYPE;
CURSOR dataset IS
SELECT
field1,
field2,
fieldN
FROM
table1,
table2,
(SELECT field3 from table3);
-- WHERE CLAUSE ... and so on..
BEGIN
V_FILEHANDLE := UTL_FILE.FOPEN(DESTFOLDER, FILENAME, 'w');
FOR R IN dataset LOOP
UTL_FILE.PUT_LINE(V_FILEHANDLE, R.ROW);
END LOOP;
END;
/
并得到pls-00302
错误,指出我应该定义ROW
组件。因此,据我所知,该字段应该已经存在于查询中。我对吗?
我可以简单地从光标写一行吗?