web-dev-qa-db-ja.com

単一の結果を変数に格納してクエリで再利用する方法(Oracle)

私のようなクエリがあります

SELECT id FROM xyz WHERE ...;

これは多かれ少なかれ複雑なWHERE句を持ち、1つの列(ID)を持つ1つの行を正確に返します。スクリプト内のいくつかの後のクエリでこのIDが必要です。したがって、私の目標は、この結果を変数で再利用することでしたが、機能する解決策には至りませんでした。

このクエリに参加することは、この状況では適切なオプションではありません。では、この単一の結果を変数に格納し、この変数を使用して新しいクエリを作成するようにOracleに指示することは可能ですか?明示的に他のクエリの条件節で使用するには?

もしそうなら、おそらく誰かが簡単な例を投稿することができます-最も簡単なのはおそらくsthでしょう。お気に入り

SELECT :VARIABLE FROM DUAL
6
cljk

ヒキガエルの場合、SOの this 回答から:

これはあなたが望むものを達成すると思います。バインド変数を宣言し、それに値を挿入して、将来の文で使用できます。

variable l_var varchar2(1);

begin
  select dummy
    into :l_var
    from dual;
end; 

select *
from dual
where dummy = :l_var;

それは違いをもたらします... SQL * Plusは変数を使用できますが、SQL * Plusの機能であり、コードのそのブロックを取得してOracleバックエンドに渡して実行することができます(Transact SQLブロックの場合と同様です)。例えば)。

次のように、SQL * Plusでバインド変数を使用するかどうかを選択できます。 http://www.adp-gmbh.ch/ora/sqlplus/use_vars.html

または、SQL * Plus独自の変数をDEFINEおよびCOLUMNコマンドで使用します。 http://www.adp-gmbh.ch/ora/sqlplus/new_value.html

他の環境でコードを実行可能にする必要がある場合は、PL/SQLルートをたどる必要があります。

1
Colin 't Hart