it-swarm.com.de

Wie speichere ich ein einzelnes Ergebnis in einer Variablen und verwende es in einer Abfrage (Oracle) wieder?

Ich habe eine Frage wie

SELECT id FROM xyz WHERE ...;

dies hat eine mehr oder weniger komplexe WHERE-Klausel und gibt genau eine Zeile mit einer Spalte (ID) zurück. Ich benötige diese ID für mehrere spätere Abfragen in einem Skript. Mein Ziel war es also, dieses Ergebnis in einer Variablen wiederzuverwenden, aber ich komme nicht zu einer Lösung, die funktioniert.

Die Teilnahme an dieser Abfrage wäre unter diesen Umständen keine gute Option. Ist es also möglich, Oracle anzuweisen, dieses einzelne Ergebnis in einer Variablen zu speichern und diese Variable zum Erstellen neuer Abfragen zu verwenden - explizit zur Verwendung in der Bedingungsklausel anderer Abfragen?

Wenn ja, könnte vielleicht jemand ein einfaches Beispiel posten - am einfachsten wäre vielleicht etw. mögen

SELECT :VARIABLE FROM DUAL
6
cljk

Für Toad von this Antwort auf SO:

Ich denke, das wird erreichen, was Sie wollen. Sie können eine Bindevariable deklarieren, einen Wert in sie einfügen und sie dann in zukünftigen Anweisungen verwenden.

variable l_var varchar2(1);

begin
  select dummy
    into :l_var
    from dual;
end; 

select *
from dual
where dummy = :l_var;

Es macht einen Unterschied ... SQL * Plus kann Variablen verwenden, aber es handelt sich um eine SQL * Plus-Funktion, und Sie können diesen Codeblock einfach abrufen und zur Ausführung an ein Oracle-Backend übergeben (wie bei einem Transact SQL-Block) zum Beispiel).

Sie können zwischen der Verwendung von Bindevariablen in SQL * Plus wie folgt wählen: http://www.adp-gmbh.ch/ora/sqlplus/use_vars.html

Oder verwenden Sie die eigenen Variablen von SQL * Plus mit den Befehlen DEFINE und COLUMN: http://www.adp-gmbh.ch/ora/sqlplus/new_value.html

Wenn der Code in anderen Umgebungen wirklich ausführbar sein muss, müssen Sie wahrscheinlich den PL/SQL-Weg gehen.

1
Colin 't Hart