私は PL/SQL を勉強しています & バインド変数を使用しています。RUN-TIME 値を渡すために使用したバインド変数を理解しました。
しかし、PL/SQL の & と :(コロン) の違いは何ですか? 両方とも同じですか、それともこの2つの違いはありますか? & と : はいつ使用する必要がありますか?
私は PL/SQL を勉強しています & バインド変数を使用しています。RUN-TIME 値を渡すために使用したバインド変数を理解しました。
しかし、PL/SQL の & と :(コロン) の違いは何ですか? 両方とも同じですか、それともこの2つの違いはありますか? & と : はいつ使用する必要がありますか?
&のみで使用され、SQL*Plusそれ以外では意味がありません。
入力バッファをSQL*Plus「解析」している間&variables、それらがdefine変更されたものに置き換えます。このリンクとこのリンクも参照してください。専門用語は代替変数です。
一方:variable、実際のバインド変数です。これらは、Oracle の SQL エンジンが SQL ステートメントを「解析」して実行するときに使用されます。たとえば、このリンクまたはこのリンクを参照してください。
つまり、&variablesSQL*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';