Ich habe ein SQL-Skript, das ein Paket mit einem Kommentar erstellt, der ein kaufmännisches Und (&) enthält. Beim Ausführen des Skripts von SQL Plus werde ich aufgefordert, einen Ersatzwert für die Zeichenfolge einzugeben, die mit & beginnt. Wie deaktiviere ich diese Funktion, damit SQL Plus das Et-Zeichen ignoriert?
Das kann für Sie funktionieren:
set define off
Andernfalls muss das kaufmännische Und am Ende einer Zeichenfolge stehen.
'StackOverflow &' || ' you'
EDIT: Ich war beim Speichern klickfreudig ... Dies wurde von einem Blog referenziert.
Wenn Sie manchmal Substitutionsvariablen verwenden, möchten Sie die Definition möglicherweise nicht deaktivieren. In diesen Fällen können Sie das kaufmännische Und-Zeichen aus seinem numerischen Äquivalent wie in || Chr(38) ||
konvertieren oder es als einzelnes Zeichen wie in || '&' ||
anhängen.
Ich habe mit dem folgenden Code aufgelöst:
set escape on
und setzen Sie ein\neben & in den linken 'value_\&_intert'
Att
Sie können das Sonderzeichen, nach dem bei der Ausführung eines Skripts gesucht wird, mit dem SET DEFINE <1_CHARACTER>
auf einen anderen Wert setzen.
Die DEFINE-Funktion selbst ist standardmäßig aktiviert und auf & gesetzt.
Es kann - wie bereits erwähnt - ausgeschaltet werden, kann aber auch durch Einstellen eines anderen Wertes vermieden werden. Seien Sie sich dessen bewusst, auf welches Zeichen Sie es setzen. Im folgenden Beispiel habe ich das Zeichen # gewählt, aber diese Wahl ist nur ein Beispiel.
SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value
'AVALUE#VAR_HASH'
-----------------
a value #var_hash
SQL> set define #
SQL> r
1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value
'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value
SQL>
set define off <- Dies ist die beste Lösung, die ich gefunden habe
Ich habe auch versucht ...
set definieren}
Ich konnte mehrere Datensätze mit den Zeichen '&' einfügen, aber das Zeichen '}' kann nicht in den Text eingefügt werdenSo entschied ich mich, "set define off" zu verwenden, und alles funktioniert wie gewünscht.
Laut diesem schönen FAQ gibt es ein paar Lösungen.
Möglicherweise können Sie auch das kaufmännische Und-Zeichen mit dem umgekehrten Schrägstrich \
entfernen, wenn Sie den Kommentar ändern können.
Ich hatte eine CASE-Anweisung mit WHEN column = 'sometext & more text' THEN ....
Ich habe es durch WHEN column = 'sometext' || ersetzt CHR (38) || 'mehr Text' DANN ...
sie könnten auch WHEN verwenden. Spalte WIE 'Sometext _ more text' THEN ...
(_ ist der Platzhalter für ein einzelnes Zeichen)