在PLSQL使用DBMS_OUTPUT.PUT_LINE回圈列印出結果,能夠成功輸出結果,但發現結果規律性地每56行會斷開成兩行。
但如果只是使用sql直接查詢結果,會正常顯示,請問是什么原因,如何解決?
大體代碼格式是下面這樣的,包括我換種方式,使用游標也是同樣的問題。
declare
v_var varchar2(20) := '某個條件';
begin
for i in (select a,b from table where c = v_var) loop
dbms_output.put_line(i.a || ',' || i.b)
end loop;
end;
uj5u.com熱心網友回復:
是否欄位中含有回車或者換行符uj5u.com熱心網友回復:
怎么斷成了兩行,你的資料是從哪里來的,結果又是什么樣的截些圖上來。
dump函式可以看欄位的實際內容
uj5u.com熱心網友回復:
這個對我有點啟發,但我試過replace回車或者換行,或者回車加換行,也試過去空格,也是一樣的結果。有沒有方法可以只能檢查這個欄位是否包含特殊字符?
uj5u.com熱心網友回復:
因為是公司資料,所以不太方便截圖。資料都來自公司的databade,用sql查詢正常沒問題,只是plsql會出現這種情況。舉個例子查詢某個欄位,這個欄位每行資料都是7位數,比如到了第五十六行,本來應該是7654321,結果變成765432,下一行是單獨的1。
uj5u.com熱心網友回復:
無論是varchar的,date的,number的欄位都一樣出現這種情況uj5u.com熱心網友回復:
這就比較奇怪了,date和number是不可能有這種字符的,否則通不過資料校驗能否提供些樣例?
uj5u.com熱心網友回復:
這個問題有點奇怪,靜等大神解答uj5u.com熱心網友回復:
看不到東西,也就沒法定位你的問題uj5u.com熱心網友回復:
給你個建議,把結果輸出到一個ascii檔案,然后放在Unix或者linux環境下打開查看是否有非法字符uj5u.com熱心網友回復:
你檢查一下第55行的B欄位 是否有回車uj5u.com熱心網友回復:
這個100%是工具的問題,我之前也遇到過。后來就沒去研究解決uj5u.com熱心網友回復:
估計是有回車、換行,從斷開行定位是哪條資料,然后再在SQL視窗查看一下是否有回車,如果是使用pl/sql develop的話,就點...進去看。uj5u.com熱心網友回復:
我感覺你說的算最接近了,確實是工具問題,應該是設定了每50行分頁之類。這個問題只出現在用dbms列印結果,如果是直接匯出資料沒有問題。
uj5u.com熱心網友回復:
首先,您的這段代碼,允許會有問題,因為dbms_output.put_line(i.a || ',' || i.b)后邊少分號。我沒有你的業務表,換成了一個替代的臨時資料,代碼如下:
declare
v_var varchar2(20) := '某個條件';
begin
for i in (select LEVEL a, LEVEL b from DUAL CONNECT BY LEVEL <= 1000) loop
dbms_output.put_line(i.a || ',' || i.b) ;
end loop;
end;
根據您的描述,嚴重懷疑是您資料的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/32957.html
標籤:基礎和管理
