ホーム › フォーラム › A5:SQL Mk-2掲示板 › 複数のSQL文を記述した時のReplace
- このトピックには5件の返信、1人の参加者があり、最後に
により1年、 3ヶ月前に更新されました。
-
投稿者投稿
-
のっぽ
ゲスト1つのSQLドキュメント内に複数のSQLを記述し、
全てのSQLで疑似命令Replaceを使用しても最初のSQL内しか
置換されません。
全てのSQLを対象にReplaceされるようになれば大変助かります。
よろしくお願いいたします。松原正和
キーマスターのっぽさんこんにちは。
一応、すべてのSQLで、Replace 疑似命令を記述して正しく動作するはずなのですが、再現する単純なSQLを提供していただくことは可能でしょうか?
(テーブル名やカラム名などは仮の値にしていただいて構いません)のっぽ
ゲストご対応ありがとうございます。
それでは簡単なサンプルです
環境はOracle 11.2.0.4、a5m2は2.19.2 x86 OCI経由です
——————————————-
— * Replace ‘Z’ 3select * from (
select 1 A from dual
union all
select 2 A from dual
union all
select 3 A from dual
)
where A = ‘Z’
;
select * from (
select 1 A from dual
union all
select 2 A from dual
union all
select 3 A from dual
)
where A = ‘Z’
;
——————————————-
2つのSQLは同じで、Replaceでwhere句の引数を置換します
1つ目は正しく3のレコードを取得できますが、
2つ目はORA-01722: 数値が無効です。となります。以上です。よろしくお願い致します。
とある利用者
ゲストのっぽさん、こんにちは。 横槍で恐縮です。
多分、最初の WHERE句の直下にある セミコロンのせいで
そこでSQL構文がいったん終了しているから
その後のSQL構文には反映されないんだと思いますよ。
(同様のクエリで再現確認しました。)同様の問い合わせが過去にあったようで、作者様が回答なさっています。
疑似命令:Replaceについて
2021/07/14 09:41 #9283「Replace疑似命令は、直下のSQLのみに影響する機能です。」
だそうです。のっぽ
ゲストゲストさんこんにちは。
ご指摘ありがとうございます。
このトピックを立ててから#9283の投稿に気が付きました。重複してしまって申し訳ないです。
#9283で作者様は最後に「ちょっと考えてみます。」で含みを残されてますが、
やっぱり対応は難しいのでしょうか。松原正和
キーマスターとある利用者さん、のっぽさんこんにちは。
すみません。確かに疑似命令の Replace は直下のSQLにのみ影響する機能で、開いているSQLエディタ全体に影響する機能として考えると機能自体はそこまで難しくないように思えますが、UIというか見せ方というか、難しいなと考えています。 -
投稿者投稿