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