在使用Oracle脚本对数据数据进行格式化导出的时候出现下列报错。
1. 首先检查写文件路径是否给了权限
2. 如果一条数据的数据长度较大,需要修改缓存使得写文件操作能进行
ORA-29285: file write error
ORA-06512: at "SYS.UTL_FILE", line 140ORA-06512: at "SYS.UTL_FILE", line 379
ORA-06512: at "SYS.UTL_FILE", line 756
ORA-06512: at "GL_BANK.UXUNDUMP_TXT", line 46
ORA-06512: at line 1
问题关键:
l_output := utl_file.fopen( p_dir, p_filename, 'w' );
修改为:
l_output := utl_file.fopen( p_dir, p_filename, 'w' ,32767);
fopen函数在的第四个默认参数的默认值是 1024,即每条数据长度不大于1k,如果数据长度大于1024 即会抛出以上错误。
此参数值表示所开辟的数据单元缓存大小 若没有调用utl_file.new_line( l_output ); 函数结束一条数据的读取,则所有数据的导出均使用这个缓存。