プロが教えるわが家の防犯対策術!

“SQL文を作るSQL”の書き方ってあるのでしょうか?
例えばなのですが、表同士を大量に結合して条件に当てはまったものをアップデートするようなSQLを書く場合、文法を間違うとエライこちゃ!になる場合がありますよね。
そういう場合って結合するんじゃなくて結合したSELECT文を使って条件だしをして1件1件単純アップデートをした方が安心ですよね。
(定期処理であれば効率が悪いですが・・・だったらプロシージャですか・・・というところになりますがごくたまにや1回きりのデータ変更など)
そういったことをやるほうほうはありますでしょうか?
仕様はSQL99です。

A 回答 (2件)

#1ですが、実務で実際に行ってること(考え方)を回答したんだけど。


レスが何もないということはあまりお困りではなかったのかな?

selectの結果が1000行なら、hogehoge.sqlの中身に1000行のUpdate文が作成されるんですよ。

update 会員マスタ set flg = '1' where 会員ID ='0001';
update 会員マスタ set flg = '1' where 会員ID ='0002';
update 会員マスタ set flg = '1' where 会員ID ='0003';
のように。
    • good
    • 0
この回答へのお礼

大変助かりました。レスが遅くなり申し訳ありませんでした

お礼日時:2011/07/19 23:40

Spoolを使う。

ヘッダー、改ページを抑制しておくこと。

「会員マスタがあって、性別が男性のレコードから会員IDを選択するSQL文」を思い浮かべてください。
で「その会員IDを元に、FLGに1を加算するUPDATEするSQL文」を作成する、として。

--ここ以降をSQL*Plusに放り込むと c:\hogegoge.sqlが出来上がる。

set heading off
set pagesize 0
set linesize 3000
set trimspool on

spool c:\hogehoge.sql

select 'update 会員マスタ set flg = ''1'' where 会員ID ='''|| 会員ID||''';' from 会員マスタ where 性別='男';

spool off
    • good
    • 0
この回答へのお礼

助かりました!

お礼日時:2011/07/19 23:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!