2011-08-23 14 views
5

मुझे बेवकूफ़ लगता है, लेकिन मैं इस एसपी को डिफ़ॉल्ट मान नहीं सकता .... यहां मैं अपने पैरामीटर घोषित कर रहा हूं।SQL सर्वर 2008 संग्रहीत प्रक्रिया में डिफ़ॉल्ट पैरामीटर मान

ALTER PROCEDURE [dbo].[PCS_DocumentCacheInsert] 
(
    @sessionId varchar(200), 
    @mrn varchar(50) , 
    @fromDate datetime, 
    @toDate datetime, 
    @aggregate varchar(50), 
    @author varchar(50), 
    @datePerformed dateTime, 
    @docId varchar(15), 
    @encounterId varchar(15), 
    @facility varchar(5), 
    @level char(1), 
    @orderedByAuthor varchar(50), 
    @resultAuthor varchar(50), 
    @resultCode varchar(5), 
    @resultId varchar(30), 
    @resultName varchar(30), 
    @status varchar(5), 
    @subType varchar(10), 
    @type varchar(10), 
    @security varchar(3), 
    @serviceGroup varchar(15), 
    @witmurNum varchar(10), 
    @deptId varchar(10), 
    @deptText varchar(40), 
    @cacheCreateTS dateTime , 
    @cacheStatus varchar(8) ='notReady', 
    @cacheUpdateTS datetime 
) 

सब कुछ इस proc के साथ ठीक काम करता है को छोड़कर मैं notReady@cacheStatus के लिए डिफ़ॉल्ट नहीं मिल सकता है। Google का कहना है कि मैं सही वाक्यविन्यास का उपयोग कर रहा हूं।

यहाँ

है मैं कैसे एमएस में

EXEC @return_value = [dbo].[PCS_DocumentCacheInsert] 
    @sessionId = N'asdfssa', 
    @mrn = N'asdf', 
    @fromDate = NULL, 
    @toDate = NULL, 
    @aggregate = NULL, 
    @author = N'author', 
    @datePerformed = NULL, 
    @docId = N'id', 
    @encounterId = NULL, 
    @facility = NULL, 
    @level = NULL, 
    @orderedByAuthor = NULL, 
    @resultAuthor = NULL, 
    @resultCode = NULL, 
    @resultId = NULL, 
    @resultName = NULL, 
    @status = NULL, 
    @subType = NULL, 
    @type = NULL, 
    @security = NULL, 
    @serviceGroup = NULL, 
    @witmurNum = NULL, 
    @deptId = NULL, 
    @deptText = NULL, 
    @cacheCreateTS = NULL, 
    @cacheStatus = NULL, 
    @cacheUpdateTS = NULL 

का चयन करें 'वापसी मान' = @return_value

GO

तो मैं इस जोड़ा गया है और इसकी अब काम कर कहते हैं, लेकिन मुझे समझ नहीं आता क्यों जब मैं सही क्लिक करता हूं और संग्रहीत प्रक्रिया निष्पादित करता हूं तो शून्य चेक बॉक्स का चयन करें, यह डिफ़ॉल्ट क्यों नहीं होगा। मुझे लगता है कि नल की जांच नल को 'न्यूल' भेजती है और डीबीएनयूएल नहीं?

if @cacheStatus is null 
begin 
    set @cacheStatus ='notReady' 
end 
+0

किसी भी मौका है आप कैसे सपा कहा जाता है का एक नमूना प्रदान कर सकते हैं? – Justin

+0

आपका वाक्यविन्यास अच्छा दिखता है। उस मूल्य को चेक करें जिसे आप @cachStatus पर जा रहे हैं। (यानी, सुनिश्चित करें कि आप एक पास नहीं कर रहे हैं)। – Chains

+0

मैं इसे इकाई ढांचे (एक डब्ल्यूसीएफ सेवा से) और प्रबंधन स्टूडियो में समान व्यवहार से कॉल करता हूं, दोनों जगहों को मूल्य – cobolstinks

उत्तर

17

क्या आप वाकई उस पैरामीटर के मान के रूप में शून्य नहीं भेज रहे हैं? डिफॉल्ट का उपयोग केवल तभी किया जाता है जब आप उस पैरामीटर को बिल्कुल नहीं भेजते हैं।

@JNK इस तरह एक समाधान का सुझाव यदि आप इस समस्या है:

IF @Cachestatus IS NULL SET @cachestatus = 'NotReady' 
+4

+1 करने के लिए - वर्कअराउंड 'IF' जोड़ना होगा @Cachestatus IS NULL SET @cachestatus = 'NotReady' – JNK

+0

@JNk को एक अलग उत्तर के रूप में जोड़ें क्योंकि वास्तव में यह संभवतः स्वीकार किया जाना चाहिए यदि यह वास्तव में उसकी समस्या है। – HLGEM

+0

@ एचएल - मैं बिना किसी बड़ी बात को पारित करने के बारे में बताए बिना इसे प्राप्त नहीं कर सका। इसके लिए अपने उत्तर में एक पंक्ति जोड़ें। – JNK

3

इसे इस तरह कॉल:

EXEC @return_value = [dbo].[PCS_DocumentCacheInsert] 
    @sessionId = N'asdfssa', 
    @mrn = N'asdf', 
    @fromDate = NULL, 
    @toDate = NULL, 
    @aggregate = NULL, 
    @author = N'author', 
    @datePerformed = NULL, 
    @docId = N'id', 
    @encounterId = NULL, 
    @facility = NULL, 
    @level = NULL, 
    @orderedByAuthor = NULL, 
    @resultAuthor = NULL, 
    @resultCode = NULL, 
    @resultId = NULL, 
    @resultName = NULL, 
    @status = NULL, 
    @subType = NULL, 
    @type = NULL, 
    @security = NULL, 
    @serviceGroup = NULL, 
    @witmurNum = NULL, 
    @deptId = NULL, 
    @deptText = NULL, 
    @cacheCreateTS = NULL, 
    [email protected] = NULL, 
    @cacheUpdateTS = NULL 

आप @cacheStatus पारित नहीं हो सकता है अगर आप इस्तेमाल किया पाने के लिए डिफ़ॉल्ट चाहते ।

2

एक और विकल्प जिसका अभी तक उल्लेख नहीं किया गया है, वह एक पूर्ण मूल्य पारित करने के बजाय कीवर्ड "DEFAULT" का उपयोग करना है।

तो जब सपा बुला कोड होगा:

EXEC @return_value = [dbo].[PCS_DocumentCacheInsert] 
    @sessionId = N'asdfssa', 
    @mrn = N'asdf', 
    @fromDate = NULL, 
    ... Just got rid of some lines to focus on the param in question - see DEFAULT below 
    @cacheCreateTS = NULL, 
    @cacheStatus = DEFAULT, 
    @cacheUpdateTS = NULL 
संबंधित मुद्दे