初めてお仕事で PL/SQL を使ってます。
もうわからんことばっかです。日々勉強です。
とあるテーブルがありまして、KEY1 と KEY2 が主キーになってます。
んで、KEY1 が特定の条件のデータだけ削除したいんですよ。
SELECT
KEY1
FROM
TABLE1
WHERE
KEY1 = 'HOGE'
FOR UPDATE;
DELETE FROM
TABLE1
WHERE
KEY1 = 'HOGE';
としたいんですが、INTO がねーよと怒られます。
そこで
SELECT
KEY1
INTO
W_KEY1
FROM
TABLE1
WHERE
KEY1 = 'HOGE'
FOR UPDATE;
DELETE FROM
TABLE1
WHERE
KEY1 = 'HOGE';
としたら、今度は「複数件かかるだろ、バーカ」と当然ながら怒られます。
で、しかたなく
FOR CUR_TABLE1 IN (
SELECT
KEY1,
KEY2
FROM
TABLE1
WHERE
KEY1 = 'HOGE'
FOR UPDATE
)
LOOP
DELETE FROM
TABLE1
WHERE
KEY1 = CUR_TABLE1.KEY1
AND
KEY2 = CUR_TABLE1.KEY2
END LOOP;
みたいなやりかたで削除してます。
なんか簡単な方法ないんですかね・・・・
なんで、こんな単純な DELETE 文にカーソル使わなきゃならないんだか。
#「カーソルは最後の手段!!」な自分の考え方がおかしいのか