SQL存储过程中有句不被运行.(100)

  • 主题发起人 yuzhizhi
  • 开始时间
Y

yuzhizhi

Unregistered / Unconfirmed
GUEST, unregistred user!
create procedure Cancel_shoptoPC @ID char(10), @Shop_ID char(6), @PC_ID char(6)ASbegin begin transaction delete From ShopuseForPC where id=@ID if @@rowcount=0 begin raiserror('error',16,1) rollback transaction return 99 end ELSE BEGIN Update device_set set PC_use='' where ID=@PC_ID if @@rowcount=0 Update Shop_Base set shop_use='' where ID=@Shop_ID //这句不被执行,我的需求是当device_set表中没有更新记录,最后要把Shop_Base表中Shop_use状态改变。 commit transaction return 1 END end现在不知道错在哪?if @@rowcount=0难道这句有问题?
 
肯定有问题啊,你的判断语句中已经说明(if @@rowcount=0 )@@rowcount不是零了。怎么会执行呢!
 
喜欢delphi的,进qq群delphi世界:23981160
 
@@rowcount=0 返回的是最后一个查询语句的记录行数。 在这里用得好像不太合适。
 
先查询有没需更新的记录再做判断,放到事务中....
 
先查詢,再調用@@rowcount或用 if exists
 
从你目前的代码看,似乎没有给@PC_ID赋值吧。
 
多人接受答案了。
 
顶部