In Oracle SQL Developer, Substitutionsvariablen auf diese Weise unter Verwendung WORKS:Wie erhalten Sie Variablen, die wirklich in Oracle SQL Developer funktionieren?
DEFINE var_t1_id int = 2601;
DEFINE var_t2_id int = (SELECT t2_id FROM table1 WHERE t1_id = &var_t1_id);
DEFINE var_t3_id int = (SELECT t3_id FROM table1 WHERE t1_id = &var_t1_id);
SELECT *
FROM table2
WHERE t2_id = &var_t2_id;
SELECT *
FROM table3
WHERE t3_id = &var_t3_id;
Obwohl, wenn ich die 2601 in etwas anderes zu ändern, und starten Sie die Abfrage, SQL Developer weiterhin für die 2601 verwenden Ersatz !!! Nicht das, was ich will ...
Ich versuchte dies:
variable var_t1_id number;
variable var_t2_id number;
variable var_t3_id number;
exec :var_t1_id := 2601;
exec SELECT t2_id INTO :var_t2_id FROM table1 WHERE t1_id = :var_t1_id;
exec SELECT t3_id INTO :var_t3_id FROM table1 WHERE t1_id = :var_t1_id;
SELECT *
FROM table2
WHERE t2_id = :var_t2_id;
SELECT *
FROM table3
WHERE t3_id = :var_t3_id;
und diese:
DEFINE var_t1_id int = 2601;
DEFINE var_t2_id int = (SELECT t2_id FROM table1 WHERE t1_id = (SELECT &&var_t1_id from dual));
DEFINE var_t3_id int = (SELECT t3_id FROM table1 WHERE t1_id = (SELECT &&var_t1_id from dual));
SELECT *
FROM table2
WHERE t2_id = (SELECT &&var_t2_id FROM dual);
SELECT *
FROM table3
WHERE t3_id = (SELECT &&var_t3_id FROM dual);
aber keine richtig funktioniert - ich meine, sollte das Skript ausführen, ohne mich auffordert für Werte ...
Wie kann ich das lösen?
Ich bin an SQL Server gewöhnt, wo all das so einfach ist ... Natürlich vermisse ich Oracle Wissen ... Grund, warum ich hier nach Tipps frage.
Wenn Sie nicht Ihre Bind-Variablen in SQL Developer definieren, erhalten Sie eine Eingabeaufforderung (gleiches Verhalten mit Substitutionsvariablen) erhalten. Sie können dieses Verhalten bei vielen Berichten als "out of the box" erkennen (z. B. in den Datenwörterbuchberichten). –
Sprichst du vom 2. Codeblock? Im 3. habe ich einen DEFINE-Abschnitt - wenn das der richtige Weg ist, um bind vars zu definieren? – user3341592
Ich sprach darüber, wie Substitutions- und Bind-Variablen im Allgemeinen in SQL Developer funktionieren (nicht zu einem bestimmten Beispiel, das Sie angegeben haben). Aus Oracle-Sicht werden Substitutionsvariablen hauptsächlich in SQL * Plus-Skripten verwendet (gut dokumentiertes Verhalten). Mit Bindevariablen werde ich sie in SQL Developer normalerweise in anonymen Block oder Objekte (z. B. Paket) oder DML verwenden. BTW, Justin Cave hat eine nette Antwort auf eine ähnliche Frage hier, http://stackoverflow.com/questions/5653423/how-doi-i-use-variables-in-oracle-sql-developer –