テーブル変数 (プロシージャまたは関数の一部である場合はパラメーター) を宣言し、not in
に使用できます。 一部:
DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
次のようにコードで使用します:
where [Location Code] between '0000' and '0040'
and [Item No_] not IN (select NotInValues from @NotIn)
and Gutschrift = '1'
and [Document Date] between @Start and @Ende
注 1: 多数の値の場合、not exists は not in よりもパフォーマンスが優れている可能性があります
注 2: ストアド プロシージャの一部である場合は、ユーザー定義のテーブル型を作成し、それを使用してテーブル値パラメーターを宣言する必要があります。また、テーブル値パラメーターは読み取り専用であるため、それらに対して DML ステートメント (挿入/更新/削除) を実行するとエラーが発生します。
UDT を作成するには:
CREATE TYPE IntegerList As Table
(
IntValue int
)
ストアド プロシージャのパラメーター リストで宣言するには:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)