Sql server 2005 无法在SQL Proc的变量中设置返回值

Sql server 2005 无法在SQL Proc的变量中设置返回值,sql-server-2005,tsql,stored-procedures,Sql Server 2005,Tsql,Stored Procedures,我创建了一个简单的存储过程,它返回一个字符串 create proc im.mmtest as select 'testvalue' go 然后调用SP并将其返回值设置为变量。通过选择所有三行并按F5执行此块。在执行exec语句时,我确实看到了该值,但在select@ret\u var中没有返回字符串值 请帮我理解为什么。我在一个复杂的SP中使用这个,不知道为什么SP的值显示不正确 declare @ret_var as varchar(10) exec @ret_var = im.mmt

我创建了一个简单的存储过程,它返回一个字符串

create proc im.mmtest as 
select 'testvalue'
go
然后调用SP并将其返回值设置为变量。通过选择所有三行并按F5执行此块。在执行exec语句时,我确实看到了该值,但在
select@ret\u var
中没有返回字符串值

请帮我理解为什么。我在一个复杂的SP中使用这个,不知道为什么SP的值显示不正确

declare @ret_var as varchar(10)
exec @ret_var =  im.mmtest
select @ret_var
提前感谢您的帮助

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

返回的不是返回值(这必须使用只支持整数的语句来实现),而是结果集。请尝试使用输出参数:

create proc im.mmtest 
    @OutVal VARCHAR(10) OUTPUT
as 
select @OutVal = 'testvalue' 
go
然后这样称呼它:

DECLARE @Val VARCHAR(10)
EXECUTE im.mmtest @Val OUTPUT
SELECT @Val
返回值(必须是数字)的语法为:


您当前使用的语法将接收该返回值。但是您不能使用任何非数字的对象,因此最好使用输出参数。

在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

谢谢你的回复。但是我想返回'testvalue',我想返回select返回的内容。我该怎么做?
DECLARE @ret_var varchar(10)
EXEC im.mmtest(@ret_var)
SELECT @ret_var