2017-11-29 5 views
0

Ich versuche, Variablen in einem Oracle SQL-Skript zu verwenden. Im Anschluss an die How to declare variable and use it in the same SQL script? (Oracle SQL) Post Ich habe meine Variablen wie folgt definiert:Definieren von Variablen Oracle-Skript

DEFINE dummyvar INT := 1; 
SELECT '&dummyvar' FROM DUAL; 

Dies führt jedoch PopUps für einen Wert zu fragen, wenn das Skript ausgeführt wird (wenn eine Variable Wiederverwendung es Erzeugen Popups für einen Wert hält fragen). Ist es möglich, die Erzeugung von Popups zu verhindern, wenn ein Wert für eine Variable definiert ist? Im obigen Beispiel möchte ich die Erzeugung eines Popups verhindern. Wenn eine Variable definiert ist als:

kann ein Popup generiert werden, um das Popup zu öffnen.

Dies für die Ausführung des Skripts in SQL Developer.

Danke.

+0

Wenn es speziell um SQL Developer (oder PL/SQL Developer oder Toad oder etwas anderes) geht, bestätigen und markieren Sie die Frage. Es ist nicht klar, was für ein "Oracle-Skript" das ist. –

+0

Die Frage bearbeitet, um einen Verweis auf SQL Developer hinzuzufügen. –

Antwort

0

Jedes Mal, wenn Sie eine gespeicherte Abfrage oder Skript ausführen, SQL * Plus ersetzt den Wert der Variablen für jeden Variable Substitutionsvariable referenzieren (in Form & Variable oder & & Variable). SQL * Plus fragt Sie in dieser Sitzung erst nach dem Wert der Variablen ab, wenn Sie die Variable UNDEFINE angegeben haben.

Wenn sich der Wert einer definierten Variablen über mehrere Zeilen erstreckt (mit dem Befehlsfortsetzungszeichen SQL * Plus), ersetzt SQL * Plus jedes Fortsetzungszeichen und Wagenrücklauf durch ein Leerzeichen. Zum Beispiel interpretiert SQL * Plus

DEFINE TEXT = 'ONE- 
TWO- 
THREE' 

als

DEFINE TEXT = 'ONE TWO THREE' 

Sie vermeiden sollten Variablen mit Namen definieren, die auf Werte identisch sein können, die Sie ihnen passieren wird, wie zu unerwarteten Ergebnissen kommen kann. Wenn ein für eine definierte Variable angegebener Wert einem Variablennamen entspricht, wird der Inhalt der übereinstimmenden Variablen anstelle des angegebenen Werts verwendet.

Einige Variablen sind vordefiniert, wenn SQL * Plus gestartet wird. Geben Sie DEFINE ein, um ihre Definitionen anzuzeigen. SQL * Plus ersetzt den Wert MANAGER für & POS

DEFINE POS = MANAGER 

Wenn Sie einen Befehl ausführen, einen Verweis auf & POS enthält:

Beispiele

Um den Wert MANAGER auf die Variable POS zuweisen, geben Sie und fordert Sie nicht zu einem POS-Wert auf.

DEFINE DEPARTMENT_ID = 20 

Auch wenn Sie die Nummer 20, SQL * eingeben plus weisen einen CHAR-Wert, bestehend aus zwei Zeichen department_id, 2 und 0:

Um den CHAR-Wert 20 auf den variablen DEPARTMENT_ID, zuordnen.

Um die Definition DEPARTMENT_ID aufzulisten, geben Sie

DEFINE DEPARTMENT_ID 
DEFINE DEPARTMENT_ID = "20" (CHAR) 

Dieses Ergebnis zeigt, dass der Wert von DEPARTMENT_ID 20.

ist
0

Sie können VAR anstelle von definieren, wenn Sie einen bestimmten Datentyp benötigen. INT ist nicht gültig in VAR und nur gültig in SQL, PL/SQL.

Dies funktioniert in SQL-Entwickler mit RUN-Skript (F5).

VAR dummyvar NUMBER; 
EXEC :dummyvar := 1; 
SELECT :dummyvar value FROM DUAL; 

Dieses auf SQL arbeitet * Plus.Note die korrekte Syntax für DEFINE. Sie haben := anstelle von = verwendet. Wenn Sie es in Anführungszeichen einschließen, wird der Wert ignoriert.

DEFINE dummyvar = 1; 
SELECT &dummyvar FROM DUAL; 
Verwandte Themen