2

SQL Developer でパッケージをデバッグしようとしています。デバッグしようとしているメソッドは 2 つのパラメーターを取ります

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

「デバッグ」アイコンをクリックすると、この手順に必要な入力を求められます。私は与える

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

しかし、デバッグを開始すると、dblinkの値が次のように表示されます

 'linkname                                                   
 '

つまり、リンク名、たくさんのスペース、そして最後の引用符です。コードでこれをやろうとすると

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

バッファが小さすぎるというエラーが表示されますが、これは理にかなっています。しかし、なぜSQL Developerはそうしているのでしょうか? それを修正する方法は?

4

2 に答える 2

2

あなたのパディングは、SQL Developerがバインドする変数を定義する方法から来ていると推測しています(おそらくCHAR(4000)として定義しています)。今のところ、dblink 変数の周りに trim() を配置することで、テスト コードでこれを回避できるはずです。

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

プロダクションコードがおそらく行っているように、プロシージャがリテラル (または正しいサイズの CHAR 変数、VARCHAR など) を渡された場合、これは通常は必要ないことに注意してください。

于 2010-11-18T22:06:29.967 に答える
0

デバッグの目的で、VARCHAR2 パラメータを受け入れるラッパー プロシージャを作成し、それをプロシージャに渡します。次に、ラッパーを呼び出して SQL Developer でデバッグします。

于 2010-11-19T00:52:17.673 に答える