存储过程里使用select要注意的一个问题!

经常写存储过程,使用select来返回一个数据集,今天偶然在存储过程中需要判断一个字段的值不能在一张表里重复,这个字段不是主键,我就用了select来查询,

然后用@@rowcount来判断是不是等于0,是的话直接用

select '2' as flag

结果返现老是返回2个select数据集出来,一个就是上面那个查询的,后来在各个位置测试都会这样,突然想到了,这本来就是sql数据库的一个机制,在存储过程中用select来查询数据都会返回,除非你把select后面查询的数据赋给一个变量,比如:

select @flag=name from **

这样就不会在调用存储过程作为返回集了,最后我用了一个投机取巧的办法来解决的:

update SysRole set RoleName=@RoleName where  RoleName=@RoleName

if @@rowcount=0

  ////////实现

else

  ///////实现

 

@RoleName这个参数是带入存储过程的变量。这样就解决我开始第一个select犯得问题了。

 

呵呵,一直没有注意过这个问题。

posted @ 2010-07-30 10:20  坚持·坚持  阅读(1275)  评论(0编辑  收藏  举报