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

直角プリズムの体積を計算するための PL/SQL BIND 変数

    前の質問への回答 に記載されているとおり 、およびAPCのコメントでは、バインド変数はここではあまり提供していませんが、演習のようです...あなたが持っているコードは、 dbms_output でOKの値を表示します . PRINT を使用するには 代わりに、d_volume を宣言することはできません ブロックを終了すると範囲外になるため、PL/SQL ブロックで variable にする必要があります。 同様に:

    VARIABLE d_length NUMBER;VARIABLE d_height NUMBER;VARIABLE d_width NUMBER;VARIABLE d_volume NUMBER;BEGIN :d_length :=&q_length; :d_height :=&q_height; :d_width :=&q_width; :d_volume :=:d_length * :d_height * :d_width;END;/print d_lengthprint d_heightprint d_widthprint d_volume  

    set verify off を使用した SQL*Plus の場合 粗雑さを取り除くには、次のように指定します:

    q_length の値を入力してください:3q_height の値を入力してください:4q_width の値を入力してください:5PL/SQL プロシージャは正常に完了しました。 D_LENGTH---------- 3 D_HEIGHT---------- 4 D_WIDTH---------- 5 D_VOLUME---------- 60SQL>  

    不思議なことに、これは SQL Developer (3.1.07 または 3.2.20) ではまったく機能しません。行 :d_volume :=:d_length * :d_height * :d_width; 期待どおりに値を割り当てないため、null として報告されます。 select :d_length * :d_height * :d_width into :d_volume from dual; を実行できます 代わりに、「SQL ステートメントのプレースホルダー」であるため、ある程度の意味があります。 :d_volume をまだ参照できないようです ブロック内 (つまり、dbms_output の場合は null として報告されます) それ)、しかしそれは print によって表示されます .

    BEGIN :d_length :=&q_length; :d_height :=&q_height; :d_width :=&q_width; :d_length * :d_height * :d_width をデュアルから :d_volume に選択します。 dbms_output.put_line('ブロック内の d_volume:' || :d_volume);END;/匿名ブロック ブロック内の完了 d_volume:D_LENGTH-3D_HEIGHT-4D_WIDTH-5D_VOLUME--60  

    興味深いことに、dbms_output.put_line(':d_volume'); :ZSqlDevUnIq8 のようなものを示します SQL開発者; SQL*Plus では :d_volume と表示されます .




    1. SQL ServerでGETDATE()をミリ秒単位で出力する方法は?

    2. phpMyAdminでデータベースを管理する方法

    3. JavaのORACLE関数MONTHS_BETWEENのアナログ

    4. Mysql PHPで生成されたテーブル:Tablesorterでは機能しません