Ich habe ein SQL-Skript, das ein Paket mit einem Kommentar erstellt, der ein kaufmännisches Und (&) enthält. Wenn ich das Skript über SQL Plus ausführe, werde ich aufgefordert, einen Ersatzwert für die Zeichenfolge einzugeben, die mit & beginnt. Wie deaktiviere ich diese Funktion, damit SQL Plus das kaufmännische Und ignoriert?
104
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 von seinem numerischen Äquivalent wie in konvertieren
|| Chr(38) ||
oder es als einzelnes Zeichen wie in anhängen|| '&' ||
.quelle
Ich habe mit dem folgenden Code gelöst:
und setzen Sie ein \ neben & in die linke
'value_\&_intert'
Att
quelle
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
aber er hat mir den Fehler gegebenORA-01780: string literal required
.Sie können das Sonderzeichen, nach dem bei der Ausführung eines Skripts gesucht wird, mithilfe von auf einen anderen Wert setzen
SET DEFINE <1_CHARACTER>
Standardmäßig ist die DEFINE-Funktion selbst aktiviert und auf & eingestellt
Es kann - wie bereits erwähnt - ausgeschaltet werden, aber es kann auch vermieden werden, indem es auf einen anderen Wert eingestellt wird. Achten Sie genau darauf, auf welches Zeichen Sie es setzen. Im folgenden Beispiel habe ich das Zeichen # gewählt, aber diese Auswahl ist nur ein Beispiel.
quelle
set define off <- Dies ist die beste Lösung, die ich gefunden habe
Ich habe auch versucht ...
set define}
Ich konnte mehrere Datensätze mit kaufmännischen Und-Zeichen '&' einfügen, aber ich kann das Zeichen '}' nicht in den Text einfügen. Deshalb habe ich mich für "set define off" entschieden und alles funktioniert wie es sollte.
quelle
Nach dieser schönen FAQ gibt es ein paar Lösungen.
Möglicherweise können Sie das kaufmännische Und auch mit dem Backslash-Zeichen umgehen,
\
wenn Sie den Kommentar ändern können.quelle
set escape on
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önnen auch die WHEN-Spalte LIKE 'sometext _ more text' THEN ...
(_ ist der Platzhalter für ein einzelnes Zeichen)
quelle