2010-02-05 46 views
0

設置返回值的變量我創建了一個簡單的存儲過程,它返回一個字符串不能在SQL PROC

create proc im.mmtest as 
select 'testvalue' 
go 

那麼我所說的SP和它的返回值設置爲一個變量。通過選擇全部三行並按F5來執行該塊。我確實看到了執行exec語句時的值,但我沒有將字符串值返回select @ret_var

請幫我理解爲什麼。我在複雜的SP中使用它,不知道爲什麼SP的值無法正確顯示。

declare @ret_var as varchar(10) 
exec @ret_var = im.mmtest 
select @ret_var 

非常感謝您的幫助。

回答

0
create proc im.mmtest as 
select 'testvalue' 
RETURN 99 --insert value here 
go 

返回值是RETURN設置且始終整數

選擇這樣會返回一個記錄集。在這裏,一列一列

也許你想輸出參數

create proc im.mmtest 
    @foo varchar(100) OUTPUT 
as 
select @foo = 'testvalue' 
go 

DECLARE @bar varchar(100) 
EXEC im.mmtest @bar OUTPUT 
SELECT @bar 
+0

謝謝您的答覆。但是我想返回'testvalue',我想返回select返回的內容。我怎麼做? – user267277 2010-02-05 17:30:03

1

你不是返回一個返回值(你不得不使用RETURN聲明只支持整數做反正) ,但結果集。嘗試的輸出參數來代替:

create proc im.mmtest 
    @OutVal VARCHAR(10) OUTPUT 
as 
select @OutVal = 'testvalue' 
go 

然後調用它是這樣的:

DECLARE @Val VARCHAR(10) 
EXECUTE im.mmtest @Val OUTPUT 
SELECT @Val 

一個返回值的語法(其必須是數字)是:

RETURN(1) -- RETURN value 1 

的語法您目前正在使用會收到該返回值。但是你不能用任何非數字來做,因此你最好使用OUTPUT參數。

+0

這就像一個魅力!謝謝。 – user267277 2010-02-05 17:35:06

+0

@needshelp - 不用擔心:) – AdaTheDev 2010-02-05 17:36:35

0

返回proc的輸出參數中的varchar值。

CREATE PROC im.mmtest (@retVal varchar(10) OUTPUT) AS 
    SELECT @retVal = 'testvalue' 
GO 

...然後得到從SP正是如此值:

DECLARE @ret_var varchar(10) 
EXEC im.mmtest(@ret_var) 
SELECT @ret_var