2010-02-25 14 views
7

क्या हम संग्रहीत प्रक्रिया से शून्य मूल्य वापस कर सकते हैं। मैं collase या isnull का उपयोग नहीं करना चाहता हूँ। मैं सामने की ओर न्यूल पर कब्जा करना चाहता हूं। क्या यह संभव है ?हम संग्रहित प्रक्रिया से एक शून्य वापस कर सकते हैं

संपादित करें:

मैं Sql Server 2005

जैसे उपयोग कर रहा हूँ। मैं कहाँ उपयोग करने के लिए

CREATE PROCEDURE [Authentication].[spOnlineTest_CheckLogin] 

    @UserName NVARCHAR(50) 
AS 
BEGIN TRY 
    BEGIN TRAN 
        COMMIT TRAN 
    RETURN NULL 
     END TRY 

त्रुटि चाहता हूँ 'spOnlineTest_CheckLogin' प्रक्रिया शून्य की स्थिति, जिसकी अनुमति नहीं है वापस जाने के लिए प्रयास किया। इसके बजाय 0 की स्थिति वापस कर दी जाएगी। संदेश 0, स्तर 11, राज्य 0, रेखा 0 वर्तमान आदेश पर एक गंभीर त्रुटि आई। यदि कोई परिणाम हैं, तो उनकी उपेक्षा की जानी चाहिए।

+0

आप किस डेटाबेस का उपयोग कर रहे हैं? एसक्यूएल सर्वर, MySQL, आदि? –

+0

@ जस्टिन: क्यू टैग किया गया टी-एसक्यूएल। यह एसक्यूएल सर्वर है। –

+1

@ मेहरदद अफशारी, साइबेस टी-एसक्यूएल का भी उपयोग करता है –

उत्तर

7

नहीं, संग्रहित प्रक्रिया का रिटर्न प्रकार INT है और यह शून्य नहीं हो सकता है।

+0

संग्रहीत प्रक्रियाओं के लिए इनपुट पैरामीटर INT हो सकते हैं और अभी भी पूर्ण असाइन किए जा सकते हैं तो पैरामीटर वापस क्यों न करें? –

+0

@ क्रिस: इस तरह भाषा को डिज़ाइन किया गया है। मुझे अपने इच्छित उपयोग मामले के लिए विफलता/सफलता की स्थिति के रूप में संदेह है, शून्य नहीं होने के कारण समझ में आता है। –

3

उपयोग एक आउटपुट पैरामीटर, उदाहरण के

CREATE PROCEDURE Test 
    @UserName NVARCHAR(50), @Status int output 
AS 
BEGIN TRY 
    BEGIN TRAN 
        COMMIT TRAN 
    set @Status = null 
     END TRY 
     begin catch 
     end catch 
     go 

तो यह

declare @s int 
    set @s =5 
    exec Test'bla',@s output 
    select @s --will be null 
0

की तरह इसे कहते आप इस प्रकार की तरह एक proc के बारे में सोच सकते हैं। मुझे पहले संदर्भ सेट करने दें। हमारे पास एक टेबल Table1(id int, name varchar(2), Address varchar(2)) हो सकता है और आईडी प्राप्त करना चाहते हैं और यदि नहीं मिला, तो यह शून्य होगा। तो हम निम्नलिखित की तरह एक proc लिख सकते हैं:

CREATE PROCEDURE GetId 
    @Name VARCHAR(50), @Status int output 
AS 
BEGIN TRY 
    set @Status = null 
    select @Status = id from Table1 where [email protected] 

यह आपके लिए काम करेगा।

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