バインド変数
および
基本的に、PL/SQL変数をSQL*Plus置換変数と混同しています。 &d_length
を参照する場合 置換変数を定義している場合、ユーザーはその時点でその値の入力を求められます。ただし、 d_length
からは完全に独立しています。 PL/SQLのDECLARE
ブロック。
ACCEPTをご覧ください。コード>
ブロックを開始する前にユーザーから値を取得するためのきちんとした方法のコマンドですが、次のようにすることもできます:
SET SERVEROUTPUT ON
DECLARE
d_length NUMBER := &q_length;
d_height NUMBER := &q_height;
d_width NUMBER := &q_width;
d_volume NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || d_length);
DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || d_height);
DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || d_width);
d_volume := d_length * d_height * d_width;
DBMS_OUTPUT.PUT_LINE(
'The rectangular prism volume for the swimming pool is: '
|| d_volume);
DBMS_OUTPUT.PUT_LINE(
'The dimensions of the swimming pool are ' || '?');
END;
/
出力の最後の行に何を表示するかわからない。それはすでに示した3つの次元とは異なりますか?
変数
コマンド
:
SET SERVEROUTPUT ON
VARIABLE d_length NUMBER;
VARIABLE d_height NUMBER;
VARIABLE d_width NUMBER;
DECLARE
d_volume NUMBER;
BEGIN
:d_length := &q_length;
:d_height := &q_height;
:d_width := &q_width;
DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || :d_length);
DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || :d_height);
DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || :d_width);
d_volume := :d_length * :d_height * :d_width;
DBMS_OUTPUT.PUT_LINE(
'The rectangular prism volume for the swimming pool is: '
|| d_volume);
DBMS_OUTPUT.PUT_LINE(
'The dimensions of the swimming pool are ' || '?');
END;
/
d_length
に注意してください 、 d_height
およびd_width
このバージョンでは、バインド変数であるため、接頭辞としてコロンが付いています。しかし、 d_volume
PL/SQLブロックでまだ宣言されているからではありません。そして、実際の値はまだ置換変数としてユーザーから取得されています。ただし、これは少し複雑です。それらをバインド変数にすることは、ここに実際には何も追加しません。