我试图用以下过程打开并替换文本文件中的字符串:
BEGIN
v_file_name := 'text_file.txt';
v_filehandle := utl_file.fopen(v_file_dir, v_file_name, 'W');
v_id_nextval := v_id_nextval + 1;
BEGIN
LOOP
utl_file.get_line(v_filehandle, v_new_line);
v_new_line := replace(v_new_line, 30690, v_id_nextval);
EXIT WHEN v_new_line IS NULL;
END LOOP;
END;
utl_file.fclose(v_filehandle);
问题是,在运行此过程后,文本文件将变为空。如果我将“W”替换为“R”,则
v_filehandle := utl_file.fopen(v_file_dir, v_file_name, 'W');
变量的值被正确替换,但文本文件中没有任何更改,因为它只有读取访问权限。
我是做错什么了还是根本不可能?
PS:我正在使用Oracle 9i。
致以问候。
发布于 2014-08-01 06:48:32
是的,“W”会这样做的--替换文件。用'A‘来追加。我认为您不能“就地修改”;您可能需要将文件复制到一个新的文件中,进行您想要的更改,删除原始文件,然后重命名该副本。
所有这些都回避了一个问题,为什么您要尝试在PL/SQL中完成所有这些工作。在用Python编写的外部程序中进行调用可能会更好一些--当然更容易一些。
https://dba.stackexchange.com/questions/72941
复制相似问题