我想从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