create procedure notesystem_createaddressbook
(@loginname char(20) ,@addressbookname char(20))
as
Declare @userid int
select userid from userinfo where username = @loginname)
set @userid  = userid   ------为什么不能让userid附值给@userid
if not exists(select * from addressbook where addressbookname = @addressbookname and owneruserid = @userid)
insert into Addressbook(owneruserid,addressbookname) values (@userid ,@addressbookname)
go
@loginname 和 @addressbookname 是外面传近来的参数问题是如何在存储过程中另建1个参数让select语句查询出来的值附给它

解决方案 »

  1.   

    改成:
    create procedure notesystem_createaddressbook
    (@loginname char(20) ,@addressbookname char(20))
    as
    Declare @userid int
    select @userid=userid from userinfo where username = @loginname)
    if not exists(select * from addressbook where addressbookname = @addressbookname and owneruserid = @userid)
    insert into Addressbook(owneruserid,addressbookname) values (@userid ,@addressbookname)
    go
      

  2.   

    1楼的我得到结果还是  无法将 NULL 值插入列 'OwnerUserId',表 'EnterpriceShortMessage.dbo.AddressBook';该列不允许空值。INSERT 失败。语句已终止。 
    说明@userid没得到select到的userid吧
      

  3.   

    如果userinfo不存在含有@loginname的记录,那么@userid就是NULL
      

  4.   

    create procedure notesystem_createaddressbook
    (@loginname char(20) ,@addressbookname char(20))
    as
    Declare @userid int
    SET @userid=(select userid from userinfo where username = @loginname)
    if not exists(select * from addressbook where addressbookname = @addressbookname and owneruserid = @userid)
    insert into Addressbook(owneruserid,addressbookname) values (@userid ,@addressbookname)
    go
      

  5.   

    晕~~以上方法都试过是~还是同样的问题~~~~不知道是不是SET @userid=(select userid from userinfo where username = @loginname)或select @userid=userid from userinfo where username = @loginname)语法是不能把值附给它的~~有别的方法也发来看看~
      

  6.   

    select @userid=userid from userinfo where username = @loginname)
    这种写法是没问题的,你查一下是不是别的原因吧
    比如你提供的参数有没有可匹配记录,char(20)是否可以容纳参数内容等等
      

  7.   

    好象是session的问题~我在页面1里Session["LoginName"] = this.TextBox1.Text.Trim();
    在页面2用string loginname = Convert.ToString(Session["loginname"]);为什么得不到呢~
      

  8.   

    问题找到了~~是在得到session之前我把页面跳转掉了~~哎~看样子还要做2年菜鸟~~给分结帖~~~谢谢大家~~~~