ca9*_*3d9 4 t-sql sql-server sql-server-2008
以下代码将循环无穷大.但是,在SSMS中停止查询后,该表为空.更改if @id is not null到if @@rowcount > 0会得到预期的结果.为什么@id在空时没有得到null值#t?
select 100 id into #t
l:
declare @id int
select top 1 @id = Id from #t
if @id is not null
begin
print @id
--begin try
raiserror ('Test error', 16, 10)
--end try
--begin catch
--end catch
delete from #t where Id = @id
goto l
end
Run Code Online (Sandbox Code Playgroud)
(1 row(s) affected) 100 Msg 50000, Level 16, State 10, Line 10 Test error (1 row(s) affected) --------- The row was deleted here. 100 Msg 50000, Level 16, State 10, Line 10 Test error (0 row(s) affected) 100 Msg 50000, Level 16, State 10, Line 10 Test error ......
更新:
更改select top 1 @id = Id from #t对set @id = (select top 1 Id from #t)优秀作品.
这select不会为@idif 分配值为#t空:
select top 1 @id = Id from #t
Run Code Online (Sandbox Code Playgroud)
解决它的一种方法:
set @id = null
select top 1 @id = Id from #t
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |