在使用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 ); 函數結束一條數據的讀取,則所有數據的導出均使用這個緩存。