Come faccio a ignorare le e commerciali in uno script SQL in esecuzione da SQL Plus?
Domanda
Ho uno script SQL che crea un pacchetto con un commento contenente una e commerciale (& amp;). Quando eseguo lo script da SQL Plus, mi viene richiesto di inserire un valore sostitutivo per la stringa che inizia con & Amp ;. Come disabilito questa funzione in modo che SQL Plus ignori la e commerciale?
Soluzione
Questo potrebbe funzionare per te:
set define off
Altrimenti la e commerciale deve trovarsi alla fine di una stringa,
'StackOverflow &' || ' you'
EDIT: sono stato contento del clic durante il salvataggio ... Questo è stato referenziato da un blog .
Altri suggerimenti
Se a volte usi variabili di sostituzione potresti non voler disattivare la definizione. In questi casi è possibile convertire la e commerciale dal suo equivalente numerico come in || Chr(38) ||
o aggiungerla come un singolo carattere come in || '&' ||
.
Ho risolto con il codice seguente:
set escape on
e metti un \ accanto a & amp; a sinistra 'value_\&_intert'
Att
È possibile impostare il carattere speciale, che viene cercato durante l'esecuzione di uno script, su un altro valore usando SET DEFINE <1_CHARACTER>
Per impostazione predefinita, la stessa funzione DEFINE è attiva ed è impostata su &
Può essere disattivato - come già detto - ma può anche essere evitato impostandolo su un valore diverso. Sii molto consapevole di quale segno hai impostato. Nell'esempio seguente, ho scelto il carattere #, ma quella scelta è solo un esempio.
SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value
'AVALUE#VAR_HASH'
-----------------
a value #var_hash
SQL> set define #
SQL> r
1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value
'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value
SQL>
set define off < - Questa è la migliore soluzione che ho trovato
Ho anche provato ...
set define}
Sono stato in grado di inserire diversi record contenenti caratteri e commerciale '& amp;' ma non posso usare il carattere "}" nel testo Così ho deciso di usare & Quot; set define off & Quot; e tutto funziona come dovrebbe.
Secondo questa bella FAQ ci sono un paio soluzioni.
Potresti anche essere in grado di sfuggire alla e commerciale con il carattere barra rovesciata \
se puoi modificare il commento.
Ho avuto una dichiarazione CASE con WHEN colonna = 'sometext & amp; altro testo "POI ....
L'ho sostituito con QUANDO colonna = 'sometext' || CHR (38) || "altro testo" POI ...
puoi anche usare QUANDO la colonna MI PIACE 'sometext _ altro testo' POI ...
(_ è il carattere jolly per un singolo carattere)