私は、1つのプロシージャからの出力が複数の後のプロシージャに必要なスクリプトを作成しています。ですから、置換変数ではなく、バインド変数が必要です。しかし、変数が使用されるたびに、変数はクリアされます。そのため、変数の値を複数回使用することは不可能です。まったく同じスクリプトがSQL * Plusで動作します。私はその問題を示す下の短いスクリプトを作成しました。スクリプト内のバインド変数をクリアするSQL Developer
これはSQL Developerで変更できる設定ですか?これはバグですか?私の場合は、SQL Developerバージョン4.1.5.21.78を使用しています。
var x varchar2(1)
var y varchar2(1)
print x
print y
exec :x := 'Z';
exec :y := 'Z';
print x
print y
exec :x := :y;
-- Why did that last line clear y?
print x
print y
出力は
X
------
Y
------
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
X
-
Z
Y
-
Z
PL/SQL procedure successfully completed.
Y
-
X
-
Z
4.2.0.17では、最後の2つの印刷コマンドが両方ともZと表示されていません(出力がコードと一致していないことを示しています)それでも...)。私も4.1.5.21の問題を見ています。だから、そのバージョンのバグのように見えます。アップグレードは回避策のようですか? –
これはこのバグの別の例かもしれないと思います:https://stackoverflow.com/q/43401127/84206 – AaronLS