Bạn có thể khai báo một biến bảng (hoặc tham số nếu nó là một phần của thủ tục hoặc hàm) và sử dụng nó cho not in
phần:
DECLARE @NotIn table (
NotInValues int
)
INSERT INTO @NotIn Values
('00009000'),
('00009900'),
('00009906')
và sử dụng nó trong mã của bạn như sau:
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
Lưu ý số 1: đối với một số lượng lớn các giá trị, không tồn tại có thể sẽ hoạt động tốt hơn sau đó không phải trong
Lưu ý # 2: Nếu đó là một phần của thủ tục được lưu trữ, bạn sẽ cần tạo một kiểu bảng do người dùng xác định và sử dụng nó để khai báo tham số có giá trị của bảng. Ngoài ra, các tham số có giá trị trong bảng chỉ được đọc, vì vậy việc thực hiện các câu lệnh DML (chèn / cập nhật / xóa) trên chúng sẽ gây ra lỗi.
Để tạo udt:
CREATE TYPE IntegerList As Table
(
IntValue int
)
Để khai báo nó trong danh sách tham số thủ tục được lưu trữ:
CREATE PROCEDURE procedureName
(
@IntList dbo.IntegerList READONLY
-- Note that the readonly must be a part of the parameter declaration.
)