2010-11-18 99 views
2

我想在SQL Developer中調試一個包。我試圖調試的方法有兩個參數Oracle SQL Developer - 幫助調試

PROCEDURE procedure_name (dblink IN CHAR, bDebug IN BOOLEAN DEFAULT FALSE) 

,當我在「調試」圖標點擊,它要求,我需要給這個程序輸入。我給

dblink:='linkname'; 
bDebug:=TRUE; 

,但是當它開始調試,我看到DBLINK的價值

'linkname             
' 

即鏈接名稱,大量的空間,然後結束報價。所以當代碼中我試圖做到這一點

`strSrc VARCHAR(120) := 'tablename'||dblink;` 

它給了我的錯誤,緩衝區是小的,這是有道理的。但爲什麼SQL Developer正在這樣做?如何解決它?

+3

是否有一個參數被聲明爲'CHAR'而不是'VARCHAR2'的原因?我懷疑這是填充的來源。 – 2010-11-18 16:04:27

+0

我不知道爲什麼它被聲明爲'CHAR'而不是'VARCHAR'。但它在生產中,所以我不認爲我可以改變它的目前調試----我唯一擔心的是填充。 – 2010-11-18 16:59:55

回答

2

我猜你的填充來自SQL Developer如何定義其變量綁定(它可能將其定義爲CHAR(4000))。現在,你應該能夠把裝飾()圍繞DBLINK變量來解決這個問題在你的測試代碼:

strSrc VARCHAR(120) := 'tablename'||trim(dblink); 

請注意,這通常不如果過程通過文字需要(或正確大小的CHAR變量,VARCHAR等),就像生產代碼可能做的那樣。

+0

我已經在使用修剪功能,但爲此我不得不修改代碼。正如我之前告訴過的那樣,代碼已經投入生產,我不想更改代碼。 – 2010-11-18 22:24:05

0

爲了進行調試,創建一個接受VARCHAR2參數的包裝過程,然後將其傳遞給您的過程;那麼你可以通過調用你的包裝來在SQL Developer中進行調試。