it-swarm-eu.dev

Jak ignorovat ampersandy ve skriptu SQL spuštěném z SQL Plus?

Mám skript SQL, který vytvoří balíček s komentářem obsahujícím znak ampersand (&). Při spuštění skriptu z SQL Plus jsem vyzván k zadání náhradní hodnoty pro řetězec začínající znakem &. Jak tuto funkci vypnu, aby SQL Plus ignoroval ampersand?

94
JoshL

To může fungovat pro vás:

set define off

Jinak musí být ampersand na konci řetězce, 

'StackOverflow &' || ' you'

EDIT: Při ukládání jsem byla šťastná ... Toto bylo odkazováno z blogu .

161
Austin Salonen

Pokud někdy používáte substituční proměnné, nemusíte se rozhodnout vypnout. V těchto případech můžete převést ampersand z jeho číselného ekvivalentu jako v || Chr(38) || nebo jej přidat jako jeden znak jako v || '&' ||.

23
Leigh Riffel

Vyřešil (a) jsem níže uvedený kód:

set escape on

a umístit vedle & v levém 'value_\&_intert'

Att

11
Cauca

Speciální znak, který je vyhledáván při provádění skriptu, můžete nastavit na jinou hodnotu pomocí SET DEFINE <1_CHARACTER>

Ve výchozím nastavení je funkce DEFINE sama zapnuta a je nastavena na &

Lze jej vypnout - jak již bylo zmíněno - ale lze jej také vyhnout nastavením jiné hodnoty. Buďte si velmi dobře vědomi, jaký znak jste nastavili. V níže uvedeném příkladu jsem vybral znak #, ale tato volba je jen příklad.

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>
6
tvCa

set define off <- Toto je nejlepší řešení, které jsem našel

Také jsem se snažil ...

set define} 

Byl jsem schopen vložit několik záznamů obsahujících znaky ampersand '&', ale nemohu použít znak '}' do textu Tak jsem se rozhodl použít "set define off" a vše funguje tak, jak má.

3
ora

Podle tohoto Nice FAQ existuje několik řešení.

Můžete také uniknout znaku ampersand znakem zpětného lomítka \, pokud můžete komentář upravit.

2
user19387

Měl jsem CASE prohlášení s WHEN sloupec = 'sometext a další text' THEN ....

Nahradil jsem ho WHEN column = 'sometext' || CHR (38) || 'více textu' THEN ...

můžete také použít KDY sloupec LIKE 'sometext _ více textu' THEN ...

(_ je zástupný znak pro jeden znak)

0
AWOLKiwi