0

考虑这个SQL

while (@Level<6)
    begin
      if (not exists(select 1 from tbtask where row_guid in (select Row_GUID from Cad_Catalog where CatalogID=@TaskCatalogID)))
         begin
            select @TaskCatalogID=PcatalogID from Cad_Catalog where CatalogID=@TaskCatalogID
            set @isUserCreateCatalog=1
         end
      else
         break
      set @Level=@Level+1
    end

执行elseandbreak时,它仍然执行。

set @Level=@Level+1

break跳转到while循环!

如果它执行set @Level=@Level+1????? 所以我认为

 set @Level=@Level+1

没有用!真的吗?

4

1 回答 1

1

正如 Jorge 所说,只要您说“break”,循环就会停止。因此不更新 @Level 变量。

但是如果你想突破,那么如果它只在循环中使用,那么更新变量应该没有关系。

如果你需要更新的关卡,你可以这样做。

else
  begin
     set @Level=@Level+1
     break
  end
  set @Level=@Level+1
end
于 2013-10-25T12:02:20.273 回答