2009-11-27 10 views
76

मैं SQL सर्वर 2008 में कुछ संग्रहीत प्रोसेस लिख रहा हूं, और सोच रहा हूं कि वैकल्पिक इनपुट पैरामीटर की अवधारणा यहां संभव है या नहीं?वैकल्पिक पैरामीटर?

मुझे लगता है कि मैं उन पैरामीटरों के लिए हमेशा एनयूएलएल में पास कर सकता हूं, जिन्हें मैं उपयोग नहीं करना चाहता हूं, संग्रहित प्रो में मूल्य की जांच करें, फिर वहां से चीजें लें, लेकिन अगर अवधारणा यहां उपलब्ध है तो मुझे रूचि है। धन्यवाद!

+1

की तरह घोषणा कर सकते हैं ले लो एक लंबे Erland की साइट पर पढ़ा है, वह गतिशील खोज की स्थिति पर कुछ महान जानकारी है: http://www.sommarskog.se/dyn-search.html –

उत्तर

140

आप इस

CREATE PROCEDURE MyProcName 
    @Parameter1 INT = 1, 
    @Parameter2 VARCHAR (100) = 'StringValue', 
    @Parameter3 VARCHAR (100) = NULL 
AS 

/* check for the NULL/default value (indicating nothing was passed */ 
if (@Parameter3 IS NULL) 
BEGIN 
    /* whatever code you desire for a missing parameter*/ 
    INSERT INTO ........ 
END 

/* and use it in the query as so*/ 
SELECT * 
FROM Table 
WHERE Column = @Parameter 
+0

आपके दोनों उत्तरों के लिए धन्यवाद! – larryq

+0

क्या होगा यदि पैरामीटर अद्वितीय पहचानकर्ता का प्रकार है? पूर्व। @userId अद्वितीय पहचानकर्ता –

+1

किसी भी व्यक्ति के लिए @ आरकेशर्मा का उत्तर देने वाला जो भी सोच रहा है - यह अद्वितीय पहचानकर्ताओं के साथ ही काम करता है। – rinukkusu

41

हां, यह है। इतनी के रूप में पैरामीटर घोषित:

@Sort varchar(50) = NULL 

अब तुम भी में पैरामीटर पारित करने के लिए की जरूरत नहीं है यह शून्य (या जो भी आप के लिए डिफ़ॉल्ट करने के लिए चुन) लागू हो जाएगी।।

+0

आप '= NULL' –

+3

की भी आवश्यकता नहीं है क्या आप वाकई इसकी आवश्यकता नहीं है? –

+32

ओएमजी टट्टू, यदि आप = शामिल नहीं करते हैं, तो पैरामीटर की आवश्यकता होगी। आप इसे पूर्ण के रूप में पास कर सकते हैं, लेकिन फिर आप उस तर्क को उस एप्लिकेशन (ओं) में स्थानांतरित कर सकते हैं जो प्रक्रिया का उपयोग करता है। –

संबंधित मुद्दे