declare @sort_id int
select @sort_id=10
select @sort_id=20 from sysobjects where 1=2
select @sort_id
你認(rèn)為@sort_id是多少?
是 10,20 還是 NULL
對(duì),不是null,那么以下程序就隱含了錯(cuò)誤:
select top 1 @sort_id=c_sort from tb_o_wg (nolock) where c_id=@id and c_adno=@adno
if isnull(@sort_id,0) = 0
begin
select @msg = '本單有商品部門為限制部門,序號(hào)'+rtrim(ltrim(str(@sort_id)))+'!'
raiserror 99999 @msg
return(-1)
end
select top 1 @sort_id=c_sort from tb_o_wg (nolock) where c_id=@id and isnull(c_pt_cost,0)=0
if isnull(@sort_id,0) > 0
begin
select @msg = '本單有無成本的商品,序號(hào)'+rtrim(ltrim(str(@sort_id)))+'!'
raiserror 99999 @msg
return(-1)
end
應(yīng)注意避免這種隱藏較深的邏輯錯(cuò)誤