2012-09-17 14 views
6

मैं दो पैरामीटर i.e @AccountId और @key पास कर रहा हूं। मैं @AccountId और @key के लिए डेटाबेस में मौजूद सभी मानों को दिखाना चाहता हूं, जब पैरामीटर i.e @AccountId और @key पैरामीटर में कोई मान नहीं है। मैं इसे एक ही डेटासेट के लिए करना चाहता हूं। क्या यह संभव है या मैंने अलग-अलग डेटासेट बनाए हैं?पैरामीटर में कोई मान नहीं होने पर एसएसआर में तालिका में सभी मानों को कैसे पास किया जाए?

क्वेरी जो मैं उपयोग कर रहा हूँ है:

CREATE PROCEDURE [dbo].[GetDenyList] 
@AccountId nvarchar(100), 
@key nvarchar(400) 
AS 
select New_AccountId AS 'AccountId/Key', New_Description AS 'Reason',CreatedOn AS 'Date' 
    from abc.dbo.New_keydenylist 
where New_AccountId is not null 
    AND @AccountId = New_AccountId 
union all 
select new_key AS 'AccountId/Key', New_Description AS 'Reason',CreatedOn AS 'Date' 
    from abc.dbo.New_keydenylist 
where New_key is not null 
    and @Key=New_key 

उत्तर

0

अगर मैं आपके सवाल का अच्छी तरह से समझते हैं, आप WHERE खंड के लिए पारित मानकों 'मूल्यों के लिए परवाह किए बिना किसी भी विधेय है कि हमेशा सच का मूल्यांकन उपयोग करना होगा। उदाहरण WHERE 1 = 1 के लिए:

WHERE 1 = 1 
AND (@AccountId IS NOT NULL OR AccountId = @AccountId) 

@key पैरामीटर के साथ एक ही:

WHERE 1 = 1 
AND (@key IS NOT NULL OR New_key = @key) 

दो पैरामीटर @key और @AccountId दोनों NULL या उनमें से एक हैं, तो WHERE खंड अभी भी मान्य हो सकता है और वापस जाने के सभी पंक्ति के रूप में प्रस्तुत नहीं किया गया था। अशक्त या पैरामीटर पर तुल्यता के लिए

+0

मैं चाहता हूँ कि केवल जब वहाँ मानकों में कोई इनपुट और इनपुट के लिए –

+0

पैरामीटर सही मान प्रदर्शित किया जाना चाहिए सभी मूल्यों प्रदर्शित किया जाना चाहिए @ उपयोगकर्ता 1677027, पैरामीटर में कोई इनपुट नहीं होने पर यह सभी मान प्रदर्शित करेगा यानी यदि दो पैरामीटर 'न्यूल' हैं जो आप खोज रहे हैं? क्या आप और स्पष्टीकरण दे सकते हैं? –

+0

मान आ रहे हैं लेकिन पैरामीटर सही परिणाम नहीं दे रहे हैं। जब हम पैरामीटर का चयन करते हैं तो यह हमेशा सभी मान देता है –

0

की जांच:

AND ((@AccountId IS NULL) OR (@AccountId = New_AccountId))