2

私は PL/SQL を勉強しています & バインド変数を使用しています。RUN-TIME 値を渡すために使用したバインド変数を理解しました。

しかし、PL/SQL の & と :(コロン) の違いは何ですか? 両方とも同じですか、それともこの2つの違いはありますか? & と : はいつ使用する必要がありますか?

4

2 に答える 2

8

&のみで使用され、SQL*Plusそれ以外では意味がありません。

入力バッファをSQL*Plus「解析」している間&variables、それらがdefine変更されたものに置き換えます。このリンクこのリンクも参照してください。専門用語代替変数です。

一方:variable実際のバインド変数です。これらは、Oracle の SQL エンジンが SQL ステートメントを「解析」して実行するときに使用されます。たとえば、このリンクまたはこのリンクを参照してください。

つまり、&variablesSQL*Plus に置き換えられてから Oracle の SQL エンジンに渡さ:variablesれますが、SQL Plus にはそのまま残され、そのままOracle の SQL エンジンに渡されます。SQL Plus以外で&は意味がありません。

于 2012-04-16T10:49:29.350 に答える
3

&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';
于 2012-04-16T10:49:51.050 に答える