Wie kann ich SQL Developer / SQL + Prompt nur einmal für eine Substitutionsvariable, die mehrmals in einer einzigen Anweisung auftritt?

StackOverflow https://stackoverflow.com/questions/735429

Frage

Ich habe eine Abfrage in etwa wie folgt aus:

 select * 
  from A_TABLE 
  where A_COLUMN = '&aVariable'
    union
 select * 
  from A_TABLE 
  where B_COLUMN = '&aVariable';

Aber wenn ich es laufen, SQL Developer fordert mich für die Variable zweimal, auch wenn sie die gleiche Variable ist.

Wenn es eine Möglichkeit gibt es für eine Variable nur einmal zu machen veranlassen, die zweimal verwendet wird, wie kann ich es tun?

ich nicht will ein Skript verwenden, muss es eine einzige ausführbare Abfrage sein.

War es hilfreich?

Lösung

Als ich diesen Beitrag bildete, habe ich herausgefunden, wie es zu tun:

 :a_var
 select * 
  from A_TABLE 
  where A_COLUMN = :a_var
    union
 select * 
  from A_TABLE 
  where B_COLUMN = :a_var;

SQL Developer wird dann für eine Bind-Variable auffordern, können Sie es eingeben und drücken Sie gelten.

Andere Tipps

select * 
  from A_TABLE 
  where A_COLUMN = '&aVariable'
    union
 select * 
  from A_TABLE 
  where B_COLUMN = '&&aVariable';

Beachten Sie, wie die zweite (und nachfolgende) Variablen verwenden double-Et-Zeichen (&&)

Ich weiß, dass Sie einen anderen Weg gefunden, es zu tun, aber FYI die grundlegende Antwort ist, dass, wenn Sie das & -Zeichen verdoppeln (zB Verwendung ‚&& avariable‘), dann ist der Wert, den Sie für die Substitutionsvariable eingeben, wird für die Länge in Erinnerung bleiben Ihre Sitzung. Beachten Sie, dass in diesem Fall, wenn Sie die Abfrage erneut ausführen, werden Sie nicht erneut aufgefordert werden, sie halten den gleichen Wert verwendet wird.

Also, wenn Sie & Substitution Sie verwenden nur die Single & wie ein schneller Weg, statt mit einem Wert wieder zu geben. Durch den Einsatz wird die && den Wert an den Variablennamen Locked-in. So && Variable würde von && variable1 unterschiedlich sein. Durch es auf diese Weise tun, werden Sie einmal gefragt, und dieser Wert Sie zu diesem Variablennamen eingehalten eingegeben werden. Einfach gesagt, wenn Sie Ihren Code wie folgt schreiben:

SELECT *
FROM A_TABLE
WHERE A_COLUMN = '&&aVariable1'
UNION
SELECT *
FROM A_TABLE
WHERE B_COLUMN ='&&aVariable2';

Dann, wenn Sie einen anderen Satz von Werten verwenden wollte müssen Sie den Variablennamen zu so etwas wie dieses ‚&& aVariable3‘ ändern und ‚&& aVariable4‘ sollte für einen anderen Satz ausreichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top