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.