आप एक टेबल वेरिएबल (या पैरामीटर अगर यह किसी प्रक्रिया या फ़ंक्शन का हिस्सा है) घोषित कर सकते हैं और इसका उपयोग 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: बड़ी संख्या में मानों के लिए, मौजूद नहीं है शायद बेहतर प्रदर्शन करेगा, न कि
नोट #2: यदि यह एक संग्रहीत प्रक्रिया का एक हिस्सा है, तो आपको एक उपयोगकर्ता परिभाषित तालिका प्रकार बनाने की आवश्यकता होगी, और इसका उपयोग तालिका के मान वाले पैरामीटर को घोषित करने के लिए करें। साथ ही, टेबल वैल्यू वाले पैरामीटर रीड ओनली होते हैं, इसलिए उन पर डीएमएल स्टेटमेंट (इन्सर्ट/अपडेट/डिलीट) करना एक एरर पैदा करेगा।
यूडीटी बनाने के लिए:
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.
)