Możesz zadeklarować zmienną tabeli (lub parametr, jeśli jest częścią procedury lub funkcji) i użyć jej dla not in
część:
DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
i użyj go w swoim kodzie w ten sposób:
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
Uwaga nr 1: dla dużej liczby wartości nie istnieje prawdopodobnie będzie działać lepiej niż nie w
Uwaga #2: Jeśli jest to część procedury składowanej, musisz utworzyć typ tabeli zdefiniowany przez użytkownika i użyć go do zadeklarowania parametru o wartości tabeli. Ponadto parametry o wartościach w tabeli są tylko do odczytu, więc wykonanie na nich instrukcji DML (wstaw/aktualizuj/usuń) spowoduje zgłoszenie błędu.
Aby utworzyć udt:
CREATE TYPE IntegerList As Table
(
IntValue int
)
Aby zadeklarować to na liście parametrów procedury składowanej:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)