怎样将记录的sql语句完整保存到文件

smartcobra 2006-12-04 08:10:49
利用spool将从v$sql中选出的用户所执行的sql语句存到了文件中,但有的很长的sql语句却不能完整的保存,用记事本打开时只能显示到记事本一行容纳的宽度,怎么办?
...全文
479 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
doer_ljy 2006-12-06
  • 打赏
  • 举报
回复
批处理
sqlplus 用户名密码连接名 @XXX.sql

XXX.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和给你的用户赋予数据字典的读取权限。而不是角色。
doer_ljy 2006-12-06
  • 打赏
  • 举报
回复
PLSQL的话utl_file。
用批处理调用一个存储过程。
存储过程里面用utl_file包把读到的SQL写入定义好的directory下的文件中。

kingkingkingking 2006-12-05
  • 打赏
  • 举报
回复
TOAD
jdsnhan 2006-12-05
  • 打赏
  • 举报
回复
utl_file
smartcobra 2006-12-05
  • 打赏
  • 举报
回复
这些工具都不行,我的目的是让一个批处理自动运行后将sql语句记录到文件中,而现在唯一不能实现的就是部分很长的语句,不能在文件中完全显示。
wangzk0206 2006-12-04
  • 打赏
  • 举报
回复
TOAD
liuyi8903 2006-12-04
  • 打赏
  • 举报
回复
也可以借助第三方工具比较方便了.如pl/sql dev

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧