PL/SQL 怎么读写文件?
文件是txt的 文件里面每行数据以tab分割我用utl_file去操作 为什么报path的错误
是不是要设置什么权限?
文件是txt的 文件里面每行数据以tab分割我用utl_file去操作 为什么报path的错误
是不是要设置什么权限?
解决方案 »
- 求助:conn sys/sys@orcl
- 数据恢复急,百分求救!
- 关于dbms_Job的疑问
- 关于full join的使用问题。谢谢!
- Oracle困惑,請高手指點,當注釋部分沒有時,如果表中無記錄,result應為null,但調試時根本不會跑到if result is null,好像直接退出了
- 删除和创建数据库的问题 --100分,急
- tnsnames中的数据库连接串经常会莫名其妙的丢失,请问会是什么原因?
- ██████快救救我啊。在线等待。我被Oracle整惨了。██████
- 请问两个问题,在线等候解答:)
- 有关于Oracle做联合查询的问题!
- 复杂SQL查询语句
- 这不是 10g ORACLE_HOME,请中止
SQL> start
SQL> start
??????????????????????????????????不明白这有什么用
基本写法:
declare
vFileHandle UTL_FILE.FILE_TYPE :=NULL;
...
begin
....
vFileHandle :=UTL_FILE.fopen(file_path,file_Name,'r');
...
语法:create directory 路径别名 as 'path_name'
路径别名是在oracle中使用的别名,path_name是实际的物理路径。
实现你需要有create any directory的权限。
里面的file_path不可以使用物理路径,应该使用上面定义的路径别名。
可以理解为这是oracle的安全管理的一种机制
里面的file_path不可以使用物理路径,应该使用上面定义的路径别名。
可以理解为这是oracle的安全管理的一种机制----------------------------------------file_path 应该在那里设置?我写在是写死了 d:\test就是报错找不到 这个目录
基本写法:
declare
vFileHandle UTL_FILE.FILE_TYPE :=NULL;
...
begin
....
vFileHandle :=UTL_FILE.fopen(file_path,file_Name,'r');
-------------------------------------------------file_path怎么检查????? 我也是作为参数的 传进去d:\test再oracle服务器上面是由这个文件目录和文件夹的
grant read(write) on directory "路径别名" to public;过程中,直接引用路径别名就行了。
create or replace directory TMP as 'd:\test';
grant read on directory TMP to public;
grant write on directory TMP to public;PROCEDURE pReadFileTest(
FPATH IN STRING,
FNAME IN STRING,
MAX_NUM IN NUMBER
)
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', MAX_NUM);
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
DBMS_OUTPUT.PUT_LINE('OTHER ERROR='||SQLERRM);END pReadFileTest;然后调试的时候 用别名作为参数传入 报错INVALID_OPERATION请教各位 为什么。
这个tmp需要大写,即使你是用小写创建的。
估计LZ错在这里了。
这个tmp需要大写,即使你是用小写创建的。
估计LZ错在这里了。---------------------------------------我是用大写的
但是现在老是报
INVALID OPERATION的错
或
utl_file_dir="D:\*"
hhacker(梦) 感谢两位的回答 我现在oracle10g版本 MS针对这个版本对目录权限的配置 并不采用init.ora 的方法 而是用命令的方法 但是我都配置了 就是老报INVALID OPERATION错误
望达人指点