create proc p_start
as
begin
  if exists(select 1 from twhere isnull(isdisable,0)=1)
  exec p_check
end 讲解一下,只取了存储过程的一部分,isdisable字段为空,则表示更改未确认,如确认了则值为1,后面的存储过程是一个子存储过程,检查更改内容的有效性,里面有一些限制的。
现在外面程序使用的是,确认前检查有效性,再操作,但上面的程序是先确认再执行检查呀。所以我想问的是上面的这个存储过程是一起执行,还是按照先后顺序执行?
如果按顺序应该是可以先确认,再做检查,再操作呀!但我在输入的值无效时,不让我确认.

解决方案 »

  1.   

    select 1 from twhere isnull(isdisable,0)你这样永远得出的都是1
    所以不管怎么样都会执行后面的p_check的
    修改一下判断条件的语句
      

  2.   

    前台业务步骤是:检查有效性-确认-执行。if exists语句是判断是否确认了。但从语句上看的顺序是确认-检查有效性-执行if exists(select 1 from t where isnull(isdisable,0)=1) --判断是否确认了,
      exec p_check --执行有效性检查语句的顺序明明是先判断再检查的呀!但为什么前台的是先检查再确认呢?不知道我说明白没,就是语句顺序和实际效果顺序反了。