引发了问题,后来高手解决了这个问题:
create procedure Add_comstomer
@good bit output,
@username varchar(20),
@password varchar(16),
@createtime datetime,
@lastlogintime datetime,
@role varchar(8),
@usersex char(2),
@userage int,
@usermobilephone varchar(12),
@useremail varchar(20),
@userquestion1 varchar(30),
@userquestion2 varchar(30),
@userquestion3 varchar(30),
@IsBuySomeBooks bit,
@HasBoughtBooks varchar(300),
@UserRemark varchar(150)
as
declare @errorSum int,@userID varchar(20);
set @errorSum=0;
begin transaction
insert into userlogin values(@username,@password,@createtime,@lastlogintime,@role)
set @errorSum=@errorSum+@@error;
select @errorsum=userid from userlogin where username=@username and password=@password;
set @errorSum=@errorSum+@@error;
insert into usertable values(@userID,@usersex,@userage,@usermobilephone,@useremail,@userquestion1,@userquestion2,@userquestion3,@IsBuySomeBooks,@HasBoughtBooks,@UserRemark)
set @errorSum=@errorSum+@@error;
if @errorsum <>0
begin
print '出错了'+convert(varchar(8),@errorSum);
set @good=0;
rollback transaction;
end
else
begin
print 'OK';
set @good=1;
commit transaction;
end
go
declare @b bit;
DECLARE @CreateDate DATETIME,@lastlogin datetime;
SET @CreateDate = GETDATE();
SET @lastlogin = GETDATE();
exec Add_comstomer @b output,@username='jack',@password='liudehua',@createtime=@CreateDate,
@lastlogintime=@lastlogin,@role='member',@usersex='男',@userage=47,@usermobilephone='12345678901',
@useremail='chauvet@qq.com',@userquestion1='myself',@userquestion2='myself',@userquestion3='myself',
@IsBuySomeBooks=0,@HasBoughtBooks=null,@UserRemark=null
高手解答:
1)
IDENT_CURRENT
返回为任何会话和任何作用域中的指定表最后生成的标识值。
语法
IDENT_CURRENT('table_name')
参数
table_name
是将要返回其标识值的表的名称。table_name 的数据类型为 varchar,没有默认值。
返回类型
sql_variant
注释
IDENT_CURRENT 类似于 Microsoft® SQL Server™ 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,它们在定义"最后"的作用域和会话上不同。
IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
2)declare @ID int
insert into userlogin values(@username,@password,@createtime,@lastlogintime,@role)
set @ID=SCOPE_IDENTITY()--用SCOPE_IDENTITY()是因为考虑到有并发操作的可能
set @userID=cast(@ID as varchar(20))
set @errorSum=@errorSum+@@error;
select @errorsum=userid from userlogin where username=@username and password=@password;
set @errorSum=@errorSum+@@error;
insert into usertable values(@userID,@usersex,@userage,@usermobilephone,@useremail,@userquestion1,@userquestion2,@userquestion3,@IsBuySomeBooks,@HasBoughtBooks,@UserRemark)
set @errorSum=@errorSum+@@error;
| ||
| ||