variable deptno number ;
deptno1 number;
答えて
主な違いはパフォーマンスにあります。バインド変数を使用すると、一度クエリを解析し、別の値でクエリを実行するたびに将来の解析を保存できます。 通常の変数を使用すると、変数の値が変更されるたびにハード・パースが実行されます。
それはまったく真実ではありません。 'update table1 set col1 = v_col1; 'のような文は、v_col1の値が変わるたびにハード解析を引き起こさない。それはバインド変数として扱われるからです。 'execute immediate 'update table1 set col1 =' || v_col1;'を実行すると、値がハードコードされているステートメントをデータベースに強制的に実行させます。つまり、v_col1の場合は 'update table1 set col1 = 101' = 101、 'update table1 set col1 = 102'ならばv_col1 = 102などです。私はあなたが2つの概念を混乱させてしまったと思います。 – Boneist
あなたの質問は本当にわかりません...しかし、私は、次の回答/ポスト(Alex Pooleから)は、SQL/PL-SQLで変数を定義する方法と方法を明確にしてください。
Declare bind variables in SQL*Plus
は、我々は両方の方法でそれら「バインド」にしようとすると、リテラルを避けます。
バインド変数は、SQLと呼び出し側アプリケーションまたはホスト言語の間のインタフェースの一部です。したがって、SQL文で単純変数を使用しないとバインド変数になりません。
declare
msg varchar2(100) := 'Hello';
begin
dbms_output.put_line(msg);
end;
実際のバインド変数の場合、これはどのような方法でも同じです。 PL/SQLコンパイラは、あなたのためにコードを作成します。 SQLは、それが実際に実行さ
var dummy varchar2(1)
exec :dummy := 'X'
declare
l_result integer;
begin
select count(*) into l_result from dual where dummy = :dummy;
dbms_output.put_line(l_result);
end;
あなたは五$ SQLから表示されますいずれかの方法で、DBMS_XPLANなど:
平野PL/SQL:明示的にSQL * Plusで定義された
declare
l_dummy varchar2(1) := 'X';
l_result integer;
begin
select count(*) into l_result from dual where dummy = l_dummy;
dbms_output.put_line(l_result);
end;
バインド変数は、は
SELECT COUNT(*) FROM DUAL WHERE DUMMY = :B1
- 1. データ型変数と変数V2の違いは何ですか?
- 2. Volatile変数とAtomic変数の違いは何ですか?
- 3. クラス変数とグローバル変数の違いは何ですか?
- 4. definePlugin変数とenv変数の違いは何ですか?
- 5. 通常の変数とRubyのインスタンス変数との違いは何ですか?
- 6. 不変変数と可変変数の違いは何ですか?
- 7. Rustの不変変数とconst変数の違いは何ですか?
- 8. セッション中の(Caching)変数と[格納]変数の違いは何ですか?
- 9. C#の静的変数と動的変数の違いは何ですか?
- 10. 非純粋関数と純粋関数の違いは何ですか?
- 11. バインド変数と&&を使用して入力した変数の違いは何ですか?
- 12. Pythonのリテラルと変数の違いは何ですか?
- 13. SSIS 2012のパラメータと変数の違いは何ですか?
- 14. sparkの変換とrdd関数の違いは何ですか?
- 15. Cのポインタとグローバル変数の違いは何ですか?
- 16. ウィンドウとトップのjavascriptグローバル変数の違いは何ですか?
- 17. sassの変数とmixinの違いは何ですか?
- 18. mvcのtempdata.peek()とセッション変数の違いは何ですか?
- 19. Pentaho DIの "変数"と "フィールド"の違いは何ですか?
- 20. 参照変数とconstポインタ変数の違いは何ですか?
- 21. (変数).toFixed(2)と+(変数).toFixed(2)の違いは何ですか?
- 22. WaitCallbackメソッドと単純メソッドのThreadPoolの違いは何ですか
- 23. オブジェクトと変数の違いは何ですか?
- 24. クラス変数とクラスインスタンスの違いは何ですか?
- 25. プロパティとインスタンス変数の違いは何ですか?
- 26. グローバル変数と内部クラスの違いは何ですか?
- 27. `USER`と` USERNAME`環境変数の違いは何ですか?
- 28. current_appとgコンテキスト変数の違いは何ですか?
- 29. インスタンス変数とプロパティの違いは何ですか?
- 30. 単純なarr1 = arr2とarr1 = arr2 [:]の違いは何ですか?
です。宣言の点で違いはありません。それはあなたがそれを使う方法です。 PL/SQLブロック内の静的SQL文で参照されるすべてのPl/SQL変数はバインド変数です。動的SQL(ネイティブ動的SQL、例えば 'execute immediate')の場合は、変数の値を変更するたびにSQLエンジンがステートメントをハード解析することを避けるために' using'節を使用して変数をバインドします。 –