sql里数据类型 varchar 转换为 int 时出错,请教下面的题那里错了,求救
alterprocuserinfoaddnew(@hhvarchar(100),@jjvarchar(100),@kkvarchar(10),@lldatetime,@i...
alter proc userinfoaddnew
(@hh varchar(100),
@jj varchar(100),
@kk varchar(10),
@ll datetime,
@id int output,
@mm char(10)
)
as
declare @nerror int
begin transaction
insert userinfo
values(@hh,@jj,@kk,@ll,@mm)
select @nerror=@@error
if @nerror=0
begin
select @id=max(用户编号)from userinfo
raiserror('以更新',16,10)
end
else
begin
if @nerror=2627
rollback transaction
raiserror('用户名以存在',16,10)
end
commit transaction
创建以上存储器后,。我就执行declare @id int
exec userinfoaddnew 'hzy','123','汪','2008-5-23 21:37','普通员',@id output
它说将数据类型 varchar 转换为 int 时出错
我想知是那错了.请教个位好人. 展开
(@hh varchar(100),
@jj varchar(100),
@kk varchar(10),
@ll datetime,
@id int output,
@mm char(10)
)
as
declare @nerror int
begin transaction
insert userinfo
values(@hh,@jj,@kk,@ll,@mm)
select @nerror=@@error
if @nerror=0
begin
select @id=max(用户编号)from userinfo
raiserror('以更新',16,10)
end
else
begin
if @nerror=2627
rollback transaction
raiserror('用户名以存在',16,10)
end
commit transaction
创建以上存储器后,。我就执行declare @id int
exec userinfoaddnew 'hzy','123','汪','2008-5-23 21:37','普通员',@id output
它说将数据类型 varchar 转换为 int 时出错
我想知是那错了.请教个位好人. 展开
1个回答
展开全部
if @nerror=2627
rollback transaction
raiserror('用户名以存在',16,10)
end
commit transaction
有错误就回滚 没错误提交 但是你这里 有错误后 回滚了操作 之后又会继续执行commit
所以你应该改为
if @nerror=2627
rollback transaction
raiserror('用户名以存在',16,10)
end
else
commit transaction
我也没仔细看 应该是这里错误了吧!
rollback transaction
raiserror('用户名以存在',16,10)
end
commit transaction
有错误就回滚 没错误提交 但是你这里 有错误后 回滚了操作 之后又会继续执行commit
所以你应该改为
if @nerror=2627
rollback transaction
raiserror('用户名以存在',16,10)
end
else
commit transaction
我也没仔细看 应该是这里错误了吧!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询