sql >> データベース >  >> RDS >> Oracle

PL/SQLでのバインド変数の学習と計算の入力および出力DBMS_OUTPUT.PUT_LINE

    バインド変数 および置換変数 は別のものなので、問題の言い回しは誤解を招きます。これは、SQL*Plusバージョンのバインド変数です。パーサーとは少し異なる(または少なくともあまり明白ではない)意味を持つ可能性があります。

    基本的に、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ブロックでまだ宣言されているからではありません。そして、実際の値はまだ置換変数としてユーザーから取得されています。ただし、これは少し複雑です。それらをバインド変数にすることは、ここに実際には何も追加しません。




    1. GUIを使用してMySQLWorkbenchでユーザー権限を確認する方法

    2. SELECTステートメントのサブクエリ(MySQL)

    3. テーブルをパラメータとしてSQLサーバーUDFに渡します

    4. WAMPでmysqlデータベースディレクトリを変更する方法