Wie Variablensubstitution in SQL Developer mit ‚Trinidad und Tobago‘ zu vermeiden
-
22-09-2019 - |
Frage
Wenn ich versuche, diese Aussage in Oracle SQL Developer ausführen 2.1 ein Dialogfeld "Enter Substitution Variable" erscheint für einen Neuwert zu fragen Sie sich für TOBAGO
update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';
Wie kann ich dies vermeiden, ohne auf chr(38)
oder u'trinidad \0026 tobago'
, die sowohl den Zweck der Erklärung verschleiern?
Lösung
Rufen Sie diese vor der Abfrage:
set define off;
Alternativ Hacky:
update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';
SET DEFINE OFF deaktiviert das Parsen von Befehlen zu ersetzen Substitutionsvariablen mit ihren Werten.
Andere Tipps
In SQL * Plus setzen SET DEFINE ?
an der Spitze des Skripts wird dies in der Regel lösen. Es könnte aber auch für Oracle SQL Developer arbeiten.
dies funktionieren wird, wie Sie ohne CHAR (38) fragte:
update t set country = 'Trinidad and Tobago' where country = 'trinidad & '|| 'tobago';
create table table99(col1 varchar(40));
insert into table99 values('Trinidad &' || ' Tobago');
insert into table99 values('Trinidad &' || ' Tobago');
insert into table99 values('Trinidad &' || ' Tobago');
insert into table99 values('Trinidad &' || ' Tobago');
SELECT * FROM table99;
update table99 set col1 = 'Trinidad and Tobago' where col1 = 'Trinidad &'||' Tobago';
Scan ausgeschaltet; Obiger Befehl funktioniert auch.
Ich war zu sehr, um dieses Problem etwas mit. Etwas begann jedes Mal wenn ich oben versucht Setup eine Verbindung zu einem beliebigen DB ..
Was für mich gearbeitet wurde jede Startup-Skript zu entfernen, die Sie konfiguriert haben könnte!
d. Tools>Preferences...>Database
und
entfernen Sie alle Dateipfad, dass Sie in das Textfeld haben beschriftet
„Dateiname für die Verbindung Startskript“!