批处理 sqlplus 用户名密码连接名 @XXX.sqlXXX.sql里面 call XXXX();存储过程XXXX里面 CREATE OR REPLACE PROCEDURE XXXX IS FL UTL_FILE.FILE_TYPE; CURSOR CSR IS SELECT SQL_TEXT FROM V$SQLAREA; sSQL varchar2(4000); BEGIN FL := UTL_FILE.FOPEN('FPATH','sql_Log.TXT','w'); ILOOP := 0; FVID := NULL; OPEN CSR; LOOP FETCH CSR INTO sSQL; EXIT WHEN CSR%NOTFOUND; UTL_FILE.PUT_LINE(FL,sSQL); END LOOP; UTL_FILE.FCLOSE(FL); EXCEPTION WHEN UTL_FILE.INVALID_PATH THEN DBMS_OUTPUT.PUT_LINE('Error : File Path is invalid.'); WHEN UTL_FILE.INVALID_MODE THEN DBMS_OUTPUT.PUT_LINE('Error : File mode is invalid.'); WHEN UTL_FILE.INVALID_OPERATION THEN DBMS_OUTPUT.PUT_LINE('Error : File operation is invalid.'); END;最后你要创建一个路径FPATH和给你的用户赋予数据字典的读取权限。而不是角色。
用批处理调用一个存储过程。
存储过程里面用utl_file包把读到的SQL写入定义好的directory下的文件中。
sqlplus 用户名密码连接名 @XXX.sqlXXX.sql里面
call XXXX();存储过程XXXX里面
CREATE OR REPLACE PROCEDURE XXXX
IS
FL UTL_FILE.FILE_TYPE;
CURSOR CSR IS SELECT SQL_TEXT FROM V$SQLAREA;
sSQL varchar2(4000);
BEGIN
FL := UTL_FILE.FOPEN('FPATH','sql_Log.TXT','w');
ILOOP := 0;
FVID := NULL;
OPEN CSR;
LOOP
FETCH CSR INTO sSQL;
EXIT WHEN CSR%NOTFOUND;
UTL_FILE.PUT_LINE(FL,sSQL);
END LOOP;
UTL_FILE.FCLOSE(FL);
EXCEPTION
WHEN UTL_FILE.INVALID_PATH THEN
DBMS_OUTPUT.PUT_LINE('Error : File Path is invalid.');
WHEN UTL_FILE.INVALID_MODE THEN
DBMS_OUTPUT.PUT_LINE('Error : File mode is invalid.');
WHEN UTL_FILE.INVALID_OPERATION THEN
DBMS_OUTPUT.PUT_LINE('Error : File operation is invalid.');
END;最后你要创建一个路径FPATH和给你的用户赋予数据字典的读取权限。而不是角色。