Come evitare la sostituzione delle variabili in Oracle SQL Developer con "trinidad & tobago"


111

Quando provo a eseguire questa istruzione in Oracle SQL Developer 2.1, viene visualizzata una finestra di dialogo "Inserisci variabile di sostituzione" che richiede un valore sostitutivo per TOBAGO ,

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

Come posso evitarlo senza ricorrere chr(38)ao u'trinidad \0026 tobago'che oscurano entrambi lo scopo dell'affermazione?


1
È strano, quando ho tentato di eseguire una query esattamente come quella nello sviluppatore SQL 2.1 non ho ottenuto la finestra della variabile di sostituzione? (E le mie definizioni sono sicuramente
attivate

Questa domanda mi ha aiutato molto.
Oh Chin Boon

Risposte:


192

Chiamalo prima della query:

set define off;

In alternativa, hacky:

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

Da Tuning SQL * Plus :

SET DEFINE OFF disabilita l'analisi dei comandi per sostituire le variabili di sostituzione con i loro valori.


9
Cosa (altro) fa set define off;?
Xonatron

15

In SQL * Plus, l'inserimento SET DEFINE ?all'inizio dello script risolverà normalmente questo problema. Potrebbe funzionare anche per Oracle SQL Developer.


2
SET DEFINE? sopprime il comportamento di sostituzione delle variabili in SQL Developer 2.1. Come notato da Nick funziona anche SET DEFINE OFF.
Janek Bogucki,

set define funziona ma il DBA non permette di usarlo a volte non so perché
nikhil sugandh

1

funzionerà come richiesto senza 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';

La mia domanda era come farlo senza usare chr(38).
Janek Bogucki

@JanekBogucki prendilo correttamente ora senza usare CHAR (38)
nikhil sugandh

ti ho dato una risposta diversa, come si dispone già di risposta segno di spunta verde, ma si downvoted
nikhil Sugandh

Amico, non puoi immaginare quale agonia hai risolto per me, lo sviluppatore sql non accetta la definizione di set quando esegui uno script. Questa è la soluzione per me
BrokenFrog

-3

Anch'io avevo qualche problema a riguardo. Qualcosa si avviava ogni volta che provavo a impostare una connessione a qualsiasi DB ..

Ciò che ha funzionato per me è stato rimuovere qualsiasi script di avvio che potresti aver configurato!

ie Tools>Preferences...>Databasee rimuovi qualsiasi percorso di file che hai nella casella di testo etichettata "Nome file per script di avvio connessione"!


-3

disattivare la scansione; Anche il comando sopra funziona.


Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post: puoi sempre commentare i tuoi post e, una volta guadagnata una reputazione sufficiente, sarai in grado di commentare qualsiasi post. Se hai una domanda correlata ma diversa, fai una nuova domanda facendo riferimento a questa se ti aiuterà a fornire il contesto.
Rohan Khude
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.