当前位置: 代码迷 >> Sql Server >> 总是死循环 为什么解决方案
  详细解决方案

总是死循环 为什么解决方案

热度:14   发布时间:2016-04-27 16:33:04.0
总是死循环 为什么
declare   @i   int
set   @i=2
while   @i <100
insert   into   citybbs   (author,time,title,contents,latest,wcity)
values   ( 'michael ',getdate(), 'ddddd ', 'ssssssssssd ',getdate(), 'dddd ')
set   @[email protected]+1

主要为了测试用   ,表主键为id   自增1。
可是,执行的时候总是死循环,无限插入数据。

------解决方案--------------------
declare @i int
set @i=2
while @i <100
begin
insert into citybbs (author,time,title,contents,latest,wcity)
values ( 'michael ',getdate(), 'ddddd ', 'ssssssssssd ',getdate(), 'dddd ')

set @[email protected]+1
end
------解决方案--------------------
while或if语句有多条的时候,应该加上BEGIN,END
------解决方案--------------------
declare @i int
set @i=2
while @i <100
insert into citybbs (author,time,title,contents,latest,wcity)
values ( 'michael ',getdate(), 'ddddd ', 'ssssssssssd ',getdate(), 'dddd ')
set @[email protected]+1
------------------------------------
因为程序执行一次后,@i又重新赋值为2,这样就是死循环,加上BEGIN和END就OK了
------解决方案--------------------
declare @i int
set @i=2
while @i <100
begin
insert into citybbs (author,time,title,contents,latest,wcity)
values ( 'michael ',getdate(), 'ddddd ', 'ssssssssssd ',getdate(), 'dddd ')
set @[email protected]+1
end

------解决方案--------------------
declare @i int
set @i=2
while @i <100
begin
insert into citybbs (author,time,title,contents,latest,wcity)
values ( 'michael ',getdate(), 'ddddd ', 'ssssssssssd ',getdate(), 'dddd ')
set @[email protected]+1
end
------解决方案--------------------


create table citybbs(
author varchar(100),
[time] datetime,
title varchar(100),
contents varchar(100),
latest datetime,
wcity varchar(100)
)

declare @i int
set @i=2
while (@i <100)
begin --注意
insert into citybbs (author,time,title,contents,latest,wcity)
values ( 'michael ',getdate(), 'ddddd ', 'ssssssssssd ',getdate(), 'dddd ')
set @[email protected]+1
end --注意
------解决方案--------------------
--要把程序块用,写在begin.....end之中,否则只执行while 的下一句,@i的值永远没有自增
--所以就是死循环!
declare @i int
set @i=2
while @i <100
begin
insert into citybbs (author,time,title,contents,latest,wcity)
values ( 'michael ',getdate(), 'ddddd ', 'ssssssssssd ',getdate(), 'dddd ')
set @[email protected]+1
end

------解决方案--------------------
在while 加上begin and 就可以了
  相关解决方案