Jak uniknąć zastępowania zmiennych w Oracle SQL Developer za pomocą „Trinidad & Tobago”


111

Kiedy próbuję wykonać tę instrukcję w Oracle SQL Developer 2.1, pojawia się okno dialogowe „Wprowadź zmienną substytucji” z prośbą o zastąpienie wartości TOBAGO ,

update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';

Jak mogę tego uniknąć, nie uciekając się do tego, chr(38)lub u'trinidad \0026 tobago'które jedno i drugie przesłania cel stwierdzenia?


1
To dziwne, kiedy próbowałem uruchomić zapytanie dokładnie takie jak w SQL Developer 2.1, nie otrzymałem okna zmiennej zastępczej? (A moje definicje są z całą pewnością włączone)
wasatz

To pytanie bardzo mi pomogło.
Oh Chin Boon

Odpowiedzi:


192

Wywołaj to przed zapytaniem:

set define off;

Alternatywnie, hacky:

update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';

Od Tuning SQL * Plus :

SET DEFINE OFF wyłącza analizowanie poleceń w celu zastąpienia zmiennych podstawionych ich wartościami.


9
Co (jeszcze) robi set define off;?
Xonatron

15

W SQL * Plus umieszczenie SET DEFINE ?na górze skryptu zwykle rozwiązuje ten problem. Może działać również dla Oracle SQL Developer.


2
USTAWIĆ DEFINE? pomija zachowanie podstawiania zmiennych w SQL Developer 2.1. Jak zauważył Nick, funkcja SET DEFINE OFF również działa.
Janek Bogucki

set define działa, ale DBA nie pozwala na jego użycie czasami nie wiem dlaczego
nikhil sugandh

1

to będzie działać tak, jak prosiłeś, bez CHAR (38):

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';

Moje pytanie brzmiało, jak można to zrobić bez użycia chr(38).
Janek Bogucki

@JanekBogucki weź to poprawnie teraz bez użycia CHAR (38)
nikhil sugandh

Dałem ci inną odpowiedź, ponieważ już masz zieloną odpowiedź, ale nie zgodziłeś się
nikhil sugandh

Kolego, nie możesz sobie wyobrazić, jaką mękę rozwiązałeś dla mnie, programista sql nie akceptuje set define off, gdy uruchamiasz skrypt. To rozwiązanie dla mnie
BrokenFrog

-3

Ja też miałem z tym jakiś problem. Coś się uruchamiało za każdym razem, gdy próbowałem skonfigurować połączenie z dowolną bazą danych.

U mnie zadziałało usunięcie dowolnego skonfigurowanego przez Ciebie skryptu startowego!

ie Tools>Preferences...>Databasei usuń ścieżkę do pliku, którą masz w polu tekstowym oznaczonym "Nazwa pliku dla skryptu uruchamiania połączenia"!


-3

wyłącz skanowanie; Powyższe polecenie działa również.


To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy zdobędziesz wystarczającą reputację, będziesz mógł komentować każdy post. Jeśli masz podobne, ale inne pytanie, zadaj nowe pytanie odnoszące się do tego, jeśli pomoże to w dostarczeniu kontekstu.
Rohan Khude
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.