从SQL Server 2008中的存储过程返回varchar(max)

时间:2012-10-28 15:23:03

标签: sql-server-2008 stored-procedures

我想从SQL Server 2008中的存储过程返回varchar(max)

所以我试过了:

alter proc SpSignup(
    @username varchar(max),
    @email varchar(max),
    @password varchar(max),
    @warning varchar(max) output)
as
   if exists(select email from [login] where email=@email)
      return 'email already exists';

   insert into [login](username, email, password) 
   values(@username, @email, @password)

如果表格中存在电子邮件,我想返回varchar值('email already exists'),并且不想将任何@warning作为参数。

但它显示执行此proc后的@warning para is not supplying

  

Msg 201,Level 16,State 4,Procedure SpSignup,Line 0
  过程或函数'SpSignup'需要参数'@warning',这是未提供的。

并且它也没有显示输出('email already exists'

1 个答案:

答案 0 :(得分:2)

您忘记在您的程序中提供参数@username

declare @warning varchar(max)

exec SpSignup
    @username = 'Bill', 
    @email = 'Bill@gmail.com',
    @password = '12345',
    @warning = @warning output

select @warning

更新:无法从过程返回varchar变量,您可以将其作为output参数传递,或者只需编码select 'email already exists'或{{ 1}}

print 'email already exists'