oracle PL/SQL 中使用UTL_FILE的问题!(在线等待)

sandyen 2003-08-20 11:59:01
下面是源代码
CREATE OR REPLACE PROCEDURE "TEST_UTLFILE"
(FPATH IN STRING,FNAME IN STRING,RET OUT STRING)
IS
FILE_HANDLE UTL_FILE.FILE_TYPE;
TEXT_BUFFER STRING(1000);
LINE_NUM NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('INPUT PATH='||FPATH);
DBMS_OUTPUT.PUT_LINE('INPUT FILENAME='||FNAME);
LINE_NUM :=0;
BEGIN
FILE_HANDLE := UTL_FILE.FOPEN(FPATH,FNAME,'R');
LOOP
LINE_NUM:= LINE_NUM + 1;
UTL_FILE.GET_LINE(FILE_HANDLE,TEXT_BUFFER);
DBMS_OUTPUT.PUT_LINE('LINE'||LINE_NUM||' : '||TEXT_BUFFER);
END LOOP;

EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN;
WHEN UTL_FILE.INVALID_PATH THEN
DBMS_OUTPUT.PUT_LINE('INVALID PATH');
WHEN UTL_FILE.INVALID_MODE THEN
DBMS_OUTPUT.PUT_LINE('INVALID MODE');
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
DBMS_OUTPUT.PUT_LINE('INVALID FILEHANDLE');
WHEN UTL_FILE.INVALID_OPERATION THEN
DBMS_OUTPUT.PUT_LINE('INVALID OPERATION');
WHEN UTL_FILE.READ_ERROR THEN
DBMS_OUTPUT.PUT_LINE('READ ERROR');
WHEN UTL_FILE.WRITE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('WRITE ERROR');
WHEN UTL_FILE.INTERNAL_ERROR THEN
DBMS_OUTPUT.PUT_LINE('INTERNAL ERROR');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;

EXCEPTION
WHEN OTHERS THEN
RET := 'OTHER ERROR='||SQLERRM;
END TEST_UTLFILE;

我在外面调用的时候参数设定为FPATH = 'F:\DownSizing\Unisys' FNAME = 'text.txt'
RET = null;
程序运行没有问题,告诉我INVALID PATH
请问这里的路径应该如何给定。

...全文
109 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoqiu 2003-09-02
  • 打赏
  • 举报
回复
可以用星号:utl_file_dir=*
这样就可以访问任何目录了,但这就有了安全隐患了。
shine333 2003-08-31
  • 打赏
  • 举报
回复
用这种方法可以试试:
sql>create directory UTL_FILE_DIR as 'F:\DownSizing\Unisys';
这样就可以使用这个路径了,而不用在init.ora中改了,另外要注意,文件只能在服务器上。
在使用时这样就行了:
FILE_HANDLE := UTL_FILE.FOPEN('UTL_FILE_TEST',FNAME,'R');

hushuangyang 2003-08-20
  • 打赏
  • 举报
回复
在initORASID.ora里面加上 utl_file_dir=F:\DownSizing\Unisys重启动即可。
sandyen 2003-08-20
  • 打赏
  • 举报
回复
我的qq:8059381
熟悉的兄弟请加我,谢谢了
非常着急!!
luckysxn 2003-08-20
  • 打赏
  • 举报
回复
可以传参数进去的
luckysxn 2003-08-20
  • 打赏
  • 举报
回复
可以传参数进去的
sandyen 2003-08-20
  • 打赏
  • 举报
回复
还有一个问题,这个文件路径应该是可变的呀
这么能这样在server端写死
sandyen 2003-08-20
  • 打赏
  • 举报
回复
我先试试,谢谢

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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