Hoe negeer ik ampersands in een SQL-script dat wordt uitgevoerd vanuit SQL Plus?

Ik heb een SQL-script dat een pakket maakt met een opmerking die een ampersand (&) bevat. Wanneer ik het script vanuit SQL Plus uitvoer, wordt mij gevraagd een vervangende waarde in te voeren voor de tekenreeks die begint met &. Hoe schakel ik deze functie uit zodat SQL Plus het ampersand negeert?


Antwoord 1, autoriteit 100%

Dit kan voor u werken:

set define off

Anders moet het ampersand aan het einde van een tekenreeks staan,

'StackOverflow &' || ' you'

EDIT: ik was blij met het opslaan… Hier werd naar verwezen in een blog.


Antwoord 2, autoriteit 15%

Als je soms substitutievariabelen gebruikt, wil je de definitie misschien niet uitschakelen. In deze gevallen zou je de ampersand kunnen converteren van zijn numerieke equivalent zoals in || Chr(38) ||of voeg het toe als een enkel teken zoals in || '&' ||.


Antwoord 3, autoriteit 7%

Ik heb het opgelost met de onderstaande code:

set escape on

en zet een \ naast & in de linker 'value_\&_intert'

Att


Antwoord 4, autoriteit 4%

U kunt het speciale teken, waarnaar wordt gezocht bij het uitvoeren van een script, op een andere waarde instellen met behulp van de SET DEFINE <1_CHARACTER>

Standaard is de DEFINE-functie zelf ingeschakeld en ingesteld op &

Het kan worden uitgeschakeld – zoals al vermeld – maar het kan ook worden vermeden door het op een andere waarde in te stellen. Wees je er goed van bewust op welk teken je het zet. In het onderstaande voorbeeld heb ik het # teken gekozen, maar die keuze is slechts een voorbeeld.

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>

Antwoord 5, autoriteit 2%

zet definiëren uit <- Dit is de beste oplossing die ik heb gevonden

Ik heb ook geprobeerd…

stel definiëren }

Ik heb verschillende records kunnen invoegen die ampersand-tekens ‘&’ bevatten maar ik kan het teken ‘}’ niet in de tekst gebruiken
Dus besloot ik om “set definition off” te gebruiken en alles werkt zoals het hoort.


Antwoord 6, autoriteit 2%

Volgens deze leuke FAQzijn er een paar oplossingen.

Je kunt mogelijk ook ontsnappen aan het ampersand met de backslash \als je de opmerking kunt wijzigen.


Antwoord 7

Ik had een CASE-statement met WHEN column = ‘sometext & meer tekst’ DAN ….

Ik heb het vervangen door
WHEN kolom = ‘iets’ || CHR(38) || ‘ meer tekst’ DAN …

je zou ook kunnen gebruiken
WANNEER kolom LIKE ‘sometext _ more text’ THEN …

(_ is het jokerteken voor één teken)

Other episodes