ストアド プロシージャの以前のクエリに基づいて、削除句と挿入句を含むストアド プロシージャに取り組んでいます。
まず、WITH ステートメントから始めて、いくつかの複雑なクエリを単純な CTE に構築し、delete および insert ステートメントで使用できるようにします。
ただし、CTE の後に挿入ステートメントと削除ステートメントの両方を実行できないようです。
サンプルコード:
WITH temp AS (SELECT id, name FROM myDBTable)
DELETE FROM thisTable WHERE .....(based on "temp")
INSERT INTO otherTable (id, name) FROM (based on "temp")
MSDNによると:
「CTE の後には、CTE 列の一部またはすべてを参照する単一の SELECT、INSERT、UPDATE、MERGE、または DELETE ステートメントが続く必要があります。CTE は、ビューの定義 SELECT ステートメントの一部として CREATE VIEW ステートメントで指定することもできます。 ."
それは「単一の」..ステートメントを言います。複数の選択/削除/などを行うことはできませんか? そうでない場合、これを回避する方法はありますか?
個別に両方のクエリが機能しますが、単一のストアド プロシージャでその CTE を使用して両方を実行できますか?