初学存储过程,主要对中间的变量,判断用处分得不是很清,劳驾哪位高人不兼麻烦,
能对以下部份进行详细解说?
1、以下两个过程,是做什么用途中,得到什么结果?
2、变量部份是什么意思?declare
3、判断起什么作用?bejing......end见笑!
create   procedure   InsertName 

@username   varchar(60), 
@userPwd   varchar(60), 
@roleName   varchar(20) 

as 
declare   @RoleID   decimal 
begin   
select   @RoleID= RoleID   from   UserRole   where   roleName=@roleName 
end begin   
Insert   into   UserLogin(loginID,username,RoleID) 
values(@username,@userPwd,@RoleID) 
end   create procedure InsertName 

@username varchar(60), 
@userPwd varchar(60), 
@roleName varchar(20) 

as 
declare @RoleID decimal 
begin 
select RoleID from UserRole where roleName=@roleName set @RoleID= 
end begin 
Insert into UserLogin(loginID,username,RoleID) 
values(@username,@userPwd,@RoleID) 
end 

解决方案 »

  1.   

    --begin......end 不是判断,而是把一组一句放在一个块中.
    --你的第二个是错的.create procedure InsertName 

      @username varchar(60), 
      @userPwd varchar(60), 
      @roleName varchar(20) 

    as 
    begin
      declare @RoleID decimal --定义个变量变
      select @RoleID= RoleID from UserRole where roleName=@roleName --把查出来的RoleID赋给变量@RoleID
      Insert into UserLogin(loginID,username,RoleID) values(@username,@userPwd,@RoleID) --把查出来的roleid就是变量@roleid和其他两个传进来的变量插入表userlogin中
    end 
      

  2.   

    --begin......end 不是判断,而是把一组语句放在一个块中. 
    --你的第二个是错的. 
    create procedure InsertName 

      @username varchar(60), 
      @userPwd varchar(60), 
      @roleName varchar(20) 

    as 
    begin
      declare @RoleID decimal --定义个变量变
      select @RoleID= RoleID from UserRole where roleName=@roleName --把查出来的RoleID赋给变量@RoleID
      Insert into UserLogin(loginID,username,RoleID) values(@username,@userPwd,@RoleID) --把查出来的roleid就是变量@roleid和其他两个传进来的变量插入表userlogin中
    end 
      

  3.   


    declare   @RoleID   decimal   
    declare @... 局部变量  
    declare @@...全局变量begin   
    select   @RoleID= RoleID   from   UserRole   where   roleName=@roleName 
    //在UserRole表中查找roleName等于@roleName的项,把它的RoleID赋给变量@RoleID    
    end  
    begin...end 执行其中一组语句
                             begin   
    Insert   into   UserLogin(loginID,username,RoleID) 
    values(@username,@userPwd,@RoleID) 
    //在UserLogin表中的loginID,username,RoleID三个字段分别插入@username,@userPwd,@RoleID的值
    end   
      

  4.   


    declare   @RoleID   decimal   
    declare @... 局部变量  
    declare @@...全局变量begin   
    select   @RoleID= RoleID   from   UserRole   where   roleName=@roleName 
    //在UserRole表中查找roleName等于@roleName的项,把它的RoleID赋给变量@RoleID    
    end  
    begin...end 执行其中一组语句
                             begin   
    Insert   into   UserLogin(loginID,username,RoleID) 
    values(@username,@userPwd,@RoleID) 
    //在UserLogin表中的loginID,username,RoleID三个字段分别插入@username,@userPwd,@RoleID的值
    end   
      

  5.   


    create   procedure   InsertName 

    @username   varchar(60), 
    @userPwd   varchar(60), 
    @roleName   varchar(20) 

    as 
    declare   @RoleID   decimal 
    begin   
    select   @RoleID= RoleID   from   UserRole   where   roleName=@roleName 
    end begin   
    Insert   into   UserLogin(loginID,username,RoleID) 
    values(@username,@userPwd,@RoleID) 
    end   运行出错消息 207,级别 16,状态 1,过程 InsertName,第 10 行
    列名 'RoleID' 无效。
    以下是两个表(我自己根据上面的存储过程创建的表):userlogin表loginid  username roleIDuserrole表userid username userpwd rolename
      

  6.   

    userrole表userid username userpwd rolename
    列名 'RoleID' 无效,原本就无此列
      

  7.   

    userrole表 userid username userpwd rolename这个表里没有RoleID字段啊
    select   @RoleID= RoleID   from   UserRole   where   roleName=@roleName 
    你这句话却要从这个表里查出这个字段,肯定会错的……
      

  8.   

    两个应该都是登陆验证,第一个是得到权限ID,并写入登陆日志,第二个是验证登录用户名和密码是否正确。
    declare 声明变量的
    begin......end 是代码块