从SQL Server 2008中的存储过程中返回VARCHAR(MAX)



我想从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作为参数。

,但它表明 @warning para is not supplying exec this proc

msg 201,16级,状态4,程序SPSIGNUP,第0行
过程或函数'spsignup'期望参数'@warning',该参数未提供。

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

您忘了将参数@username供应到您的过程

declare @warning varchar(max)
exec SpSignup
    @username = 'Bill', 
    @email = 'Bill@gmail.com',
    @password = '12345',
    @warning = @warning output
select @warning

update :无法从过程返回varchar变量,您可以将其传递为output参数,也可以只需代码select 'email already exists'print 'email already exists'

>
alter proc SpSignup
(
    @username varchar(max),
    @email varchar(max),
    @password varchar(max)
)
as
begin
    if exists(select email from [login] where email=@email)
    begin
        select 'email already exists'
        print 'email already exists'
        return
    end
    insert into [login](username, email, password) values(@username, @email, @password)
end

最新更新