Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Parametrierung des Tabellennamens in der sqlplus-Eingabedatei

Das Problem besteht darin, dass SQL*Plus die gesamte Zeichenfolge nach & behandelt , bis zum nächsten Leerzeichen oder ähnlich, als Substitutionsvariablennamen. Das ist eindeutig nicht das, was Sie hier wollen.

Glücklicherweise haben sie daran gedacht, und Sie können das Ende des Variablennamens mit einem . kennzeichnen :

FROM &3._TABLE

(Zumindest funktioniert das für benannte Variablen, und ich bin mir fast sicher, dass es für Positionsvariablen funktioniert ... wenn nicht, müssten Sie eine neue Variable definieren, die auf &3 gesetzt ist als Problemumgehung).

Es befindet sich in der Dokumentation , aber blinzle und du wirst es verpassen:

Es gibt einen verwandten Effekt, den Sie vielleicht für die Zukunft im Hinterkopf behalten sollten. Wenn das nächste Zeichen nach der Substitutionsvariablen ein . ist wie auch immer - zwischen Schema und Tabelle oder beispielsweise zwischen Tabelle und Spalte - dann wird dies als Substitutionsterminator interpretiert. Angenommen, Sie haben das Schema separat als &4 übergeben , mit dem Wert 'scott'; das:

FROM &4.&3._TABLE

sieht vernünftig aus, würde aber durch scottdev_TABLE ersetzt werden , die nicht erkannt werden. In diesem Fall benötigen Sie also eine zusätzliche:

FROM &4..&3._TABLE

was durch scott.dev_TABLE ersetzt würde .