Oracle SQL Developer を使用してSQL挿入ステートメントを実行しようとすると、「置換値を入力してください」プロンプトを生成し続けます。
insert into agregadores_agregadores
(
idagregador,
nombre,
url
)
values
(
2,
'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss\&url='
);
クエリの特殊文字をエスケープする を使用しましたが、上記の '\'を使用していますが、アンパサンド '&'を避けられず、文字列置換が発生します。
&はDEFINEのデフォルト値です。これにより、置換変数を使用できます。私はそれを使用してオフにするのが好きです
定義をオフに設定
エスケープやCHR(38)を心配する必要はありません。
|| chr(38) ||
このソリューションは完璧です。
定義文字を&以外に設定します
SET DEFINE〜 create table blah(x varchar(20)); insert into blah(x)values( 'blah&amp'); select * from blah; X -------------------- blah&amp
insert into AGREGADORES_AGREGADORES (IDAGREGADOR,NOMBRE,URL)
values (2,'Netvibes',
'http://www.netvibes.com/subscribe.php?type=rss' || chr(38) || 'amp;url=');
SELECT 'Free &' || ' Clear' FROM DUAL;
select 'one'||'&'||'two' from dual
本当の答えは、エスケープ文字を「\」に設定する必要があるということです:SET ESCAPE ON
この問題は、エスケープが無効になっているか、エスケープ文字が「\」以外に設定されているために発生した可能性があります。上記のステートメントは、エスケープを有効にしますandそれを '\'に設定します。
以前に投稿された他の回答のどれも、実際に元の質問に回答しません。それらはすべて問題を回避しますが、解決しません。