-1

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

所以我尝试了:

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在执行这个过程之后

消息 201,级别 16,状态 4,过程 SpSignup,第 0 行
过程或函数“SpSignup”需要未提供的参数“@warning”。

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

4

1 回答 1

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'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
于 2012-10-28T15:25:29.433 回答