2008-10-17 17 views
13

मैं, कुछ एक sproc कि एक पंक्ति और एक पाठ के साथ स्तंभ देता है, मैं एक चर को यह पाठ निर्धारित करने की आवश्यकता है जैसे में एक चर के लिए एक सपा वापसी मान सेट करें:एसक्यूएल सर्वर

declare @bla varchar(100) 
select @bla = sp_Name 9999, 99989999, 'A', 'S', null 

लेकिन बेशक, यह कोड काम नहीं करता है ...

धन्यवाद!

उत्तर

29

इस प्रकार उत्पादन मूल्य मिलता है, एक और समाधान अस्थायी तालिका को परिभाषित है, और उस

में परिणाम डालने के लिए किया जाएगा T-SQL में
DECLARE @Output VARCHAR(100) 

CREATE TABLE #tmpTable 
(
    OutputValue VARCHAR(100) 
) 
INSERT INTO #tmpTable (OutputValue) 
EXEC dbo.sp_name 9999, 99989999, 'A', 'S', null 

SELECT 
    @Output = OutputValue 
FROM 
    #tmpTable 

DROP TABLE #tmpTable 
+0

बहुत आसान होगा (अगर आपको अनुमति थी) इसे अपनी खुद की संग्रहीत प्रो के रूप में अधिक मूल्य के साथ सेट अप करने के लिए। संभावना है कि आप इसे कई बार कॉल करना चाहते हैं। – brianb

+0

यह टी-एसक्यूएल एसक्यूएल 2005 में मेरे लिए काम नहीं कर रहा था। मेरा एसपी एक int देता है। मैंने temp तालिका बनाई है, कोई वाक्यविन्यास त्रुटियां नहीं मिलती हैं और यह चलती है, लेकिन फिर temp तालिका में int का कोई मूल्य नहीं है। डिजी द्वारा प्रदान किए गए समाधान [इस पृष्ठ पर] ने मेरे लिए काम किया था। thx – raddevus

+0

मैंने इसे SQL Server 2008 R2 पर चेक किया। यह ठीक काम कर रहा है – Shanaka

19

संग्रहीत प्रक्रिया एकल मान लौट रहा है, तो आप संग्रहीत प्रक्रिया पर मानकों में से एक निर्धारित कर सकते हैं एक आउटपुट चर होने के लिए, और फिर संग्रहीत प्रक्रिया पैरामीटर का मान निर्धारित करेंगे

CREATE PROCEDURE dbo.sp_Name 
    @In INT, 
    @Out VARCHAR(100) OUTPUT 

AS 
BEGIN 
    SELECT @Out = 'Test' 
END 
GO 

और तो, क्या आप संग्रहीत प्रक्रिया को बदलने में असमर्थ हैं, तो के रूप में

DECLARE @OUT VARCHAR(100) 
EXEC sp_name 1, @Out OUTPUT 
PRINT @Out 
+0

समस्या यह है कि मैं प्रक्रिया के कोड को बदल नहीं सकते ... – Bruno

15
DECLARE 
    @out INT 

EXEC @out = sp_name 'param', 2, ... 

अधिक जानकारी "निष्पादित" help (सहायता MSSQL 2008 से है, लेकिन यह 2000 में भी काम करता है)

+0

यह केवल उन प्रक्रियाओं के लिए काम करता है जिनमें आउट पैरामीटर हैं। जब प्रक्रिया एक स्केलर मान (जो मूल प्रश्न का मामला है) लौटाता है। – Bill

+0

कम से कम 2012 में काम करता है, 2008 के लिए परीक्षण नहीं किया गया – JBone

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