it-swarm.com.de

Wie ignoriere ich Et-Zeichen in einem SQL-Skript, das von SQL Plus ausgeführt wird?

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?

94
JoshL

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.

161
Austin Salonen

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.

23
Leigh Riffel

Ich habe mit dem folgenden Code aufgelöst:

set escape on

und setzen Sie ein\neben & in den linken 'value_\&_intert'

Att

11
Cauca

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>
6
tvCa

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.

3
ora

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.

2
user19387

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)

0
AWOLKiwi