select*from dbo.登录表select*from dbo.用户信息表我想调用存储过程一次创建n个学号,然后插入两个表中。参数为默认密码,班级编号和n。学号的格式为如:0920090211,中间做字符串截取.下面是我写的,怎么不能达到效果……create procedure proAddStuInfo @txtPassWord varchar(50),@txtClassID int,@n int
as
declare @txtUserName varchar(50)
begin try
begin tran t 
while @n>0
if(@n<9)
set @n='0'+@n
begin
set @txtUserName=substring(convert(varchar(100),getdate(),112),2,2)+year(getdate())+@txtClassID+@n
insert 登录表(用户名,密码,角色编号) values ('@txtUserName','@txtPassWord',3)
insert 用户信息表(用户名,角色编号)values('@txtUserName',3)
set @n=@n-1
end
commit tran t
end trybegin catch
rollback tran t
end catch drop procedure proAddStuInfoexecute proAddStuInfo @txtPassWord='123',@txtClassID=1,@n=10

解决方案 »

  1.   

    在图书馆搞了一个小时,终于把它搞出来了…… 学号的格式也正确.如:0920090211 select*from dbo.登录信息表
    select*from dbo.用户信息表delete 登录信息表 where 角色编号=3
    delete 用户信息表 where 角色编号=3create procedure proAddStuInfo @txtPassWord varchar(50),@txtClassID varchar(2),@n int
    as
    declare @txtUserName varchar(50)
    declare @ClassID varchar(4)
    if(@txtClassID<=9)
    set @ClassID ='0'+@txtClassID
    else
    set @ClassID =@txtClassID
    begin trybegin transaction
    while(@n>0) 
    begin
    if(@n<=9)
    set @txtUserName=substring(convert(varchar(100),getdate(),112),3,2)+convert(varchar(4),year(getdate()))+@ClassID+'0'+convert(varchar(4),@n)
    else
    set @txtUserName=substring(convert(varchar(100),getdate(),112),3,2)+convert(varchar(4),year(getdate()))+@ClassID+convert(varchar(4),@n)
    insert dbo.登录信息表(用户账号,用户密码,角色编号) values (@txtUserName,@txtPassWord,3)
    insert dbo.用户信息表(用户账号,角色编号)values(@txtUserName,3)
    set @n=@n-1
    end
    commit transaction
    end trybegin catch
    rollback transaction
    end catch
    drop procedure proAddStuInfo
    execute proAddStuInfo @txtPassWord='123',@txtClassID='12',@n=14