2016-05-09 18 views
0

ストアドプロシージャを複数回実行することなく複数の行を削除するには、ユーザー定義のテーブル型を使用する必要があるストアドプロシージャを作成しています。私の質問は、1つのユーザ定義テーブルタイプ(17の代わりに、各テーブルに1つ)を記述し、関連するテーブルを指定するカラムを追加することです。ユーザー定義テーブル型

DELETE FROM Table1 
WHERE A_ID IN (SELECT ID FROM UserDefinedTableType WHERE TblClm = 'Table1' 

は、私が上記の文に同じユーザー定義テーブル型と、これは仕事をしたりしません場合、私は疑問に思って次の文

DELETE FROM Table2 
WHERE A_ID IN (SELECT ID FROM UserDefinedTableType WHERE TblClm = 'Table2' 

を使用することができます。たとえば、ここに私のDELETEステートメントです。私はこのコンセプトに慣れていないので、このようにUser Defined Table Typesを使用するための良い文書を見つけることができませんでした。

ありがとうございました。

+1

私はこのアプローチで何か間違っていることはありませんが、これまでに見たことではありません。私はINの代わりにあなたの削除ステートメントで結合を使用しますが、正直なところ、同じことに終わるでしょう。 –

+0

よろしくお願いいたします。私は結合を使うことができましたが、INを好むだけで、どのIDが削除されているかを明示的に定義することができます。しかし、提案をありがとう。 –

+0

あなたはIDで参加します。 :) –

答えて

0

これはコメントのために少し時間がかかり、書式設定が強制終了されます。ここでは、代わりに結合を使用することを意味しています。

DELETE t1 
FROM Table1 t1 
JOIN UserDefinedTableType udt ON t1.A_ID = udt.ID 
WHERE udt.TblClm = 'Table1' 
+0

私はあなたが私がちょっときれいなので、私はちょうどINを好むすべての時間を使用して参加を使用して意味を知っています。 –

関連する問題