私は PL/SQL を勉強しています & バインド変数を使用しています。RUN-TIME 値を渡すために使用したバインド変数を理解しました。
しかし、PL/SQL の & と :(コロン) の違いは何ですか? 両方とも同じですか、それともこの2つの違いはありますか? & と : はいつ使用する必要がありますか?
私は PL/SQL を勉強しています & バインド変数を使用しています。RUN-TIME 値を渡すために使用したバインド変数を理解しました。
しかし、PL/SQL の & と :(コロン) の違いは何ですか? 両方とも同じですか、それともこの2つの違いはありますか? & と : はいつ使用する必要がありますか?
&
のみで使用され、SQL*Plus
それ以外では意味がありません。
入力バッファをSQL*Plus
「解析」している間&variables
、それらがdefine
変更されたものに置き換えます。このリンクとこのリンクも参照してください。専門用語は代替変数です。
一方:variable
、実際のバインド変数です。これらは、Oracle の SQL エンジンが SQL ステートメントを「解析」して実行するときに使用されます。たとえば、このリンクまたはこのリンクを参照してください。
つまり、&variables
SQL*Plus に置き換えられてから Oracle の SQL エンジンに渡さ:variables
れますが、SQL Plus にはそのまま残され、そのままOracle の SQL エンジンに渡されます。SQL Plus以外で&
は意味がありません。
&
PL/SQL では意味がありません。実際には SQL Plus 機能です (互換性のために Toad、SQL Developer などにコピーされています)。SQL Plus では、置換変数&
を定義するために使用されます。この変数は、コードがサーバーに送信されて処理される前に、SQL Plus によって指定された置換テキストに置き換えられます。
SQL Plus 置換変数の正しい構文は、&name.
つまり is で始まり a&
で終わります.
が、ほとんどの場合、.
はオプションです。このコードを SQL Plus で実行すると、次のようになります。
select * from emp where ename = '&name.';
SQL Plus は、値の入力を求めるプロンプトをユーザーに表示し、クエリを実行する前にname
これをクエリに代入します。したがって、ユーザーが入力すると、実際に実行される SQL は次のようになります。KING
select * from emp where ename = 'KING';