2012-04-20 36 views
0

在SQLPLUS下執行我的腳本時出現問題。在SQL Developer下運行良好。SQLPLUS中的長PL/SQL輸出

set serveroutput on size 1000000 
declare 
yyy varchar2(32000):=''; 
begin 
yyy := 'XxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzz'; 
yyy := yyy || 'XxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzz'; 
yyy := yyy || 'XxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzzXxxYyyZzz'; 
dbms_output.put_line(yyy); 
end; 
/

SQLPLUS下,我得到錯誤:

ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at line 1 

任何解決方案如何強制SQLPLUS下運行長輸出的腳本?我需要輸出,因爲我將結果放到文件中。

+1

工作正常,我在SQL * Plus。 – 2012-04-20 15:08:21

+0

我有添加到Oracle 10g安裝的SQL * Plus版本,並且它在多臺計算機上提供了這樣的錯誤(無論是win7還是xp)。我運行SQL * Plus,然後通過'@ script.sql'調用帶有上述內容的腳本。也許我的版本被竊聽? – 2012-04-21 12:43:02

+0

它在我的Sql * plus中也能正常工作。 – Maddy 2012-04-23 10:26:51

回答

1

您使用的是Oracle客戶端比對Oracle 10g數據庫Oracle 10g的年長

請找到ASKTOM下面

運行過程中的問題不是報價,你顯然使用的是老客戶反對10.2或以上的數據庫。數據庫代碼運行良好

這是當客戶端去從數據庫中拾取字符串,你正在擊中例外。

sqlplus的是做這樣的事情:

一個)呼叫過程/代碼 - 它運行並填充一DBMS_OUTPUT緩衝液,在封裝的陣列。

b)然後sqlplus調用dbms_output.GET_LINES以獲取要打印的緩衝輸出。這是失敗的呼叫。

欲瞭解更多信息,請參閱

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1011431134399

+0

絕對正確!客戶端是10.1.x,服務器是10.2.x – 2012-04-26 11:56:56