ああ、困ったちゃん
『自称達人』
FROM:めもめも
Date:98/07/13
K:今年3年目のPG
N:自分。
T:あるSE。
一年前、
N:なんでDAOでシンプルに作らないで、毎回毎回Dynasetで開くの?
マスタひとつ開いて検索するだけなのに?
K:だって、こんなやり方で今までやってたよ?
N:そりゃ、Oracleの話でしょう。
それに、DAOには、DAOのコーディングがあるってば。
K:う〜ん、PL/SQLならま〜かせて。PL/SQLのKって呼んで。
N:・・・・
最近、
T:このストアドプロシージャが遅いんだけど、なぜかわかる?
N:これって、Kさんが作ったやつですよね?
KさんってPL/SQLを自負してるぐらいだから僕が直せないと
思いますよ。
T:一応見てよ。変だから。
N:えっ?
T:あるテーブルに削除一覧が作成されて、それを元に、あるデータを削除
する処理なんだけど、VBで同じことやったらとてつもなく遅いから、
ストアドにしたそうなんだよ。でも、それでも遅いんだよ。
リスト
CREATE OR REPLACE PROCEDURE Delete_tbl()
IS
CURSOR Del_Cur IS
SELECT ID
FROM Delete_List;
BEGIN
FOR C1REC In Del_Cur Loop
DELETE FROM Dat_tbl WHERE ID = C1REC.ID;
End Loop;
END;
N:・・・・
データは何件ほど・・・・・
T:多いときは数千件かな・・・
N:・・・(あいつってば・・・一体なに?)
これでどうです?
VBから、
OraDB.ExecuteSQL "DELETE FROM Dat_tbl " & _
"WHERE ID In (SELECT ID FROM Delete_List)"
N:これだけでOKでは?
T:おぉ〜、なんでこんなにシンプルになるの?
N:SQLって、そういうものです(^_^;)
T:しかも十分速いじゃん。これでいこっと。
実話です・・・・・
