存储过程参数问题

gloomyrancher 2006-10-24 06:43:53
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语句查询出来的值附给它
...全文
169 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gloomyrancher 2006-10-24
  • 打赏
  • 举报
回复
问题找到了~~是在得到session之前我把页面跳转掉了~~哎~看样子还要做2年菜鸟~~给分结帖~~~谢谢大家~~~~
gloomyrancher 2006-10-24
  • 打赏
  • 举报
回复
好象是session的问题~我在页面1里Session["LoginName"] = this.TextBox1.Text.Trim();
在页面2用string loginname = Convert.ToString(Session["loginname"]);为什么得不到呢~
jointan 2006-10-24
  • 打赏
  • 举报
回复
select @userid=userid from userinfo where username = @loginname)
这种写法是没问题的,你查一下是不是别的原因吧
比如你提供的参数有没有可匹配记录,char(20)是否可以容纳参数内容等等
gloomyrancher 2006-10-24
  • 打赏
  • 举报
回复
杂么沉了~~~没人知道了吗~
gloomyrancher 2006-10-24
  • 打赏
  • 举报
回复
晕~~以上方法都试过是~还是同样的问题~~~~不知道是不是SET @userid=(select userid from userinfo where username = @loginname)或select @userid=userid from userinfo where username = @loginname)语法是不能把值附给它的~~有别的方法也发来看看~

king_xuan 2006-10-24
  • 打赏
  • 举报
回复
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
jointan 2006-10-24
  • 打赏
  • 举报
回复
如果userinfo不存在含有@loginname的记录,那么@userid就是NULL
gloomyrancher 2006-10-24
  • 打赏
  • 举报
回复
1楼的我得到结果还是 无法将 NULL 值插入列 'OwnerUserId',表 'EnterpriceShortMessage.dbo.AddressBook';该列不允许空值。INSERT 失败。语句已终止。
说明@userid没得到select到的userid吧
jointan 2006-10-24
  • 打赏
  • 举报
回复
改成:
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

相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-24 06:43
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。