日期:2014-05-18  浏览次数:20500 次

如何定义存储过程中的返回值类型
比如我现在写个存储过程
alter   PROCEDURE   Services
as
declare   @count1   int
declare   @count2   int
declare   @name1   varchar(255)
declare   @name2   varchar(255)
set   @name1= 'a '
set   @name2= 'c '
begin   tran
select   @count1=count(*)   from   accounts   where   [name]=@name1
select   @count2=count(*)   from   accounts   where   [name]=@name2
if   @count1   >   0   and   @count2   >   0
begin
update   accounts   set   [money]=[money]+500   where   [name]=@name1
update   accounts   set   [money]=[money]-500   where   [name]=@name2
end
else
begin
return   '失败 '
end
commit   tran

我返回的是一个字符串,但是执行后却说
'服务器:   消息   245,级别   16,状态   1,过程   Services,行   19 '
'将   varchar   值   '失败 '   转换为数据类型为   int   的列时发生语法错误。 '

请问如何解决,高手指教下.

------解决方案--------------------
MS SQL 的 SP RETURN 只能 RETURN 整型类型!!!

其他类型,可以使用 输出参数

-- DEMO

alter PROCEDURE Services
@Result varchar(100) output
as
/*
...
*/
SELECT @Result = '失败 '
-- ...