none
sql存储过程…… RRS feed

  • 问题

  • 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 try

    begin catch
    rollback tran t
    end catch

     

    drop procedure proAddStuInfo

    execute proAddStuInfo @txtPassWord='123',@txtClassID=1,@n=10

    2011年6月16日 4:44

答案

  • 在图书馆搞了一个小时,终于把它搞出来了…… 学号的格式也正确.如:0920090211

    前面的问题处在主学号的字符串连接……

     

    select*from dbo.登录信息表
    select*from dbo.用户信息表

    delete 登录信息表 where 角色编号=3
    delete 用户信息表 where 角色编号=3

    create 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 try

    begin 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 try

    begin catch
    rollback transaction
    end catch


    drop procedure proAddStuInfo


    execute proAddStuInfo @txtPassWord='123',@txtClassID='12',@n=14


    2011年6月16日 13:03

全部回复

  • 在图书馆搞了一个小时,终于把它搞出来了…… 学号的格式也正确.如:0920090211

    前面的问题处在主学号的字符串连接……

     

    select*from dbo.登录信息表
    select*from dbo.用户信息表

    delete 登录信息表 where 角色编号=3
    delete 用户信息表 where 角色编号=3

    create 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 try

    begin 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 try

    begin catch
    rollback transaction
    end catch


    drop procedure proAddStuInfo


    execute proAddStuInfo @txtPassWord='123',@txtClassID='12',@n=14


    2011年6月16日 13:03
  • 谢谢你跟我们分享你的解决方案。
    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。 
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手



    2011年6月17日 2:47
    版主