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