私はこれを忘れて、また戻ってきます!最善の答えは、これまでに提供された回答の組み合わせだと思います。
まず、&はsqlplus / sqldeveloperの変数プレフィックスであるため、問題が発生します。これが表示された場合、変数名の一部であると予想されます。
SET DEFINE OFFは、sqlplusの解釈とこの方法を停止します。
しかし、sqlplus変数およびを使用する必要がある場合はどうなりますか? リテラルと文字?
- 変数を機能させるには、SETDEFINEONが必要です
- &の使用を回避するには、ESCAPEONを設定します。
例:
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
生産物:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
別のエスケープ文字を使用する場合:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
特定のエスケープ文字を設定すると、「SP2-0272:エスケープ文字を英数字または空白にすることはできません」と表示される場合があります。これはおそらく、エスケープ文字がすでに定義されており、物事がひどく自己参照的になることを意味します。この問題を回避するためのクリーンな方法は、最初にエスケープを開始することです。
set escape off
set escape '#'