25

Oracle データベースに対して単純な INSERT ステートメントを実行しようとしています。値の 1 つが VARCHAR2 フィールドで、挿入ステートメントにアンパサンドが含まれています。どうすればいいですか?私は次の方法を試しました:

  1. & を \& としてエスケープし、set escape on
  2. スキャンをオフに設定します (これにより、ORA-00922 欠落または無効なオプション エラーが発生します)
  3. set define off (これにより、ORA-00922 欠落または無効なオプション エラーが発生します)

他のアイデアはありますか?

4

7 に答える 7

32

SQL ウィンドウの下部に、置換変数を無効/有効にするボタンがあります。

ここに画像の説明を入力

于 2015-11-15T11:17:40.980 に答える
26

私がそれを解決した方法は、& を別の & でエスケープすることです。

例えば:

INSERT INTO Foo (Bar) VALUES ('Up && Away');

うまく動作します。助けてくれてありがとう

于 2011-08-18T08:59:45.360 に答える
13

慣れるまでに時間がかかる PL/SQL Developer の機能の 1 つは、多数の異なるウィンドウ タイプです。

これらの 1 つは、基本的に SQL*Plus エミュレーターである COMMAND ウィンドウです。SQL*Plus コマンドと SQL を実行できるのでSET ESCAPESET DEFINE 実際SET SCAN OFFにそのウィンドウで作業できます。

于 2011-08-18T08:46:26.697 に答える
11

このようなことを試しましたか?

INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');

私の最初の答えを改善すると、あなたの問題はPL /SQLDeveloperに関連しています。PL / SQL Developer Commandウィンドウでブロックを実行する場合は、SQL*Plusと同じように機能する標準のSETDEFINEOFFを使用することもできます。

于 2011-08-18T08:43:12.090 に答える
4

chr(38)PL/SQL でアンパサンドが必要な場所で使用します。

addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';
于 2015-01-27T17:48:26.850 に答える
4

以下のconcatは私にとって完全にうまく機能しました。これは、selectステートメントで行ったことです。

select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')
于 2012-10-03T13:35:24.277 に答える