Come faccio a ignorare le e commerciali in uno script SQL in esecuzione da SQL Plus?

StackOverflow https://stackoverflow.com/questions/118190

  •  02-07-2019
  •  | 
  •  

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?

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top