我想从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'
)
答案 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'