存储过程里使用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犯得问题了。
呵呵,一直没有注意过这个问题。