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.