Oracleデータベースに対して単純なINSERTステートメントを試しています。値の1つはVARCHAR2フィールドであり、挿入ステートメントにはアンパサンドが含まれています。どうすればいいですか?私は次の方法を試しました:
他のアイデアはありますか?
私がそれを解決した方法は、&を別の&でエスケープすることです。
例えば:
INSERT INTO Foo (Bar) VALUES ('Up && Away');
うまく動作します。すべての助けてくれてありがとう
慣れるのに時間がかかるPL/SQL Developerの機能の1つは、さまざまな種類のウィンドウです。
これらの1つは、基本的にSQL * Plusエミュレーターであるコマンドウィンドウです。 SQLだけでなくSQL * Plusコマンドも実行できるため、SET ESCAPE
、SET DEFINE
本当に SET SCAN OFF
そのウィンドウで動作します。
このようなことを試しましたか?
INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');
私の最初の答えを改善すると、あなたの問題はPL/SQL Developerに関連しています。 PL/SQL Developerコマンド・ウィンドウでブロックを実行する場合、標準のSET DEFINE OFFも使用できます。これはSQL * Plusと同じように機能します。
連結は私のために完全にうまく機能しましたが、私は私のselectステートメントでやったことです:
select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')
PL/SQLでアンパサンドが必要な場合は、chr(38)
を使用します。
addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';
これは単なるSQL Editorの問題です。これを解決するには、SET DEFINE OFFでプロシージャをコンパイルします。 。 PL(サーバーで実行)である実行は、この問題に直面しません。