2012-11-30 59 views
7

संभव डुप्लिकेट:संग्रहित प्रक्रिया एक स्ट्रिंग लौट रही है?

CREATE PROCEDURE test 
AS 
BEGIN 
    RETURN 'works!' 
END 
GO 

मैं तो निम्न कथन फायरिंग करके इसे निष्पादित करने के लिए चाहता था:


Conversion failed when converting the nvarchar value ‘Internet Explorer 3 original’ to data type int

तो मैं इस निम्नलिखित सरल संग्रहीत प्रक्रिया बनाया

EXEC test 

मुझे हर समय निम्न त्रुटि क्यों मिल रही है?

वर्चर मूल्य 'कार्यों को परिवर्तित करते समय रूपांतरण विफल रहा!' डेटा प्रकार int के लिए।

ओह और बीटीडब्ल्यू, (कब) एक संग्रहित प्रक्रिया के अंत में गो-स्टेटमेंट रखना आवश्यक है? मुझे लगता है कि यह कोई प्रभाव नहीं लेता है क्योंकि जब मैं अपने @ आउट स्ट्रिंग को पुनः प्राप्त कर रहा हूं तो यह प्रक्रिया से बाहर निकल जाएगा।

+3

[रिटर्न] (http://msdn.microsoft.com/en-us/library/ms174998.aspx) पर एक नज़र डालें। आप शायद 'चयन' काम करना चाहते हैं! ' – Manatherin

+1

और' जाओ 'के बारे में अपने प्रश्नोत्तरी के बारे में http://stackoverflow.com/questions/2299249/what-is-the-use-of-go-in-sql देखें -सेवर-प्रबंधन-स्टूडियो –

उत्तर

20

RETURN का प्रयोग केवल आप एक पूर्णांक कोड

आप या तो मूल्य

CREATE PROCEDURE test 
    AS 
    BEGIN 
     SELECT 'works!' 
    END 

या यदि आप कॉलर में एक चर में प्रदान करना चाहते हैं, एक आउटपुट पैरामीटर का उपयोग चयन करने की आवश्यकता पर वापस लौट सकते

CREATE PROCEDURE test 
    @outputVal VARCHAR(20) OUTPUT 
AS 
BEGIN 
    SET @outputVal = 'works!' 
END 

DECLARE @val VARCHAR(20) 
EXECUTE test @val OUTPUT 
+0

ओह यही कारण है, हा! बहुत बहुत धन्यवाद, अब मैं घर जा सकता हूं और अपने सप्ताहांत का आनंद ले सकता हूं :-) –

+1

आउटपुट में लाने के लिए आपको दूसरी प्रक्रिया के अंत में 'चयन @ वैल' की आवश्यकता है – bendecko