回答:
これはあなたのために働くかもしれません:
set define off
それ以外の場合、アンパサンドは文字列の最後にある必要があります。
'StackOverflow &' || ' you'
編集:保存するときにクリックハッピーでした...これはブログから参照されました。
置換変数を使用する場合は、定義をオフにしたくない場合があります。これらの場合、のようにアンパサンドを同等の数値から変換する|| Chr(38) ||
か、のように単一の文字として追加できます|| '&' ||
。
以下のコードで解決しました:
set escape on
左側の&の横に\を置きます 'value_\&_intert'
Att
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
いましたが、エラーが発生しましたORA-01780: string literal required
。
スクリプトの実行時に検索される特殊文字を別の値に設定するには、 SET DEFINE <1_CHARACTER>
デフォルトでは、DEFINE関数自体がオンになっており、&に設定されています。
すでに述べたように、これはオフにすることができますが、別の値に設定することによっても回避できます。あなたがそれをどのようなサインに設定したかに非常に注意してください。以下の例では、#文字を選択しましたが、その選択は単なる例です。
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>
この素晴らしいFAQによると、いくつかの解決策があります。
\
コメントを変更できる場合は、バックスラッシュ文字を使用してアンパサンドをエスケープすることもできます。
set escape on