そのためにPL/SQLブロックを使用している理由がわかりません。宣言したものを使用していないid
ため、混乱を避けるために、列名とは異なる名前を付けることをお勧めします。
ただし、SQL * Plusでバインド変数を宣言し、それを選択することができます。
var l_test_quote varchar2(80); -- or whatever type/size you need
var l_test_id varchar2(80);
declare
l_id varchar2(80) :='test123';
begin
select test_quote, test_id
into :l_test_quote, :l_test_id
from order_link
where id = l_id;
end;
/
print l_test_quote
print l_test_id
ブロックの外側で定義された変数への参照の前に注意してください:
。これは、それらがバインド変数であることを示しています。l_id
ブロック内で宣言されているため、前に。はありません:
。
この場合l_id
、ブロックの外側で定義し、バインド変数を使用しながらPL/SQLを回避することもできます。
var l_id varchar2(80);
exec :l_id := 'test123';
select test_quote, test_id
from order_link
where id = :l_id;
メインのクエリはPL/SQLではなくなったため(ただし、これexec
は1行の匿名ブロックの省略形です)、select ... into
これらの変数を宣言する必要はありません。