MSSQL 有FOR循环吗?如果要循环用什么for @ni to @Max.....

xscansou 2010-04-17 06:52:09
MSSQL 有FOR循环吗?如果要循环用什么for @ni to @Max.....
...全文
468 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2010-04-17
  • 打赏
  • 举报
回复
DECLARE @I INT
SET @I=1
WHILE(@I<100)
BEGIN
PRINT RTRIM(@I)
SET @I=@I+1;
END
htl258_Tony 2010-04-17
  • 打赏
  • 举报
回复
使用 WHILE...BREAK 或 CONTINUE  发送反馈 
请参阅
全部折叠全部展开 语言筛选器: 全部语言筛选器: 多个语言筛选器: Visual Basic语言筛选器: C#语言筛选器: C++语言筛选器: J#语言筛选器: JScript
访问和更改数据库数据 > 过程 Transact-SQL > 控制流 >
Visual Basic(Declaration)
C#
C++
J#
JScript

只要指定的条件为 True 时,WHILE 语句就会重复语句或语句块。

下面两个 Transact-SQL 语句通常和 WHILE 一起使用:REAK 或 CONTINUE。BREAK 语句退出最内层的 WHILE 循环,CONTINUE 语句则重新开始 WHILE 循环。例如,如果没有其他行可以处理,程序可能执行 BREAK 语句。例如,如果要继续执行代码,则可以执行 CONTINUE 语句。

注意:
如果将 SELECT 语句用作 WHILE 语句的条件,则 SELECT 语句必须在括号中。



示例
A. 在游标中使用 WHILE
下面的示例使用 WHILE 语句控制执行的提取数。

复制代码
USE AdventureWorks;
GO
DECLARE abc CURSOR FOR
SELECT * FROM Purchasing.ShipMethod;
OPEN abc;
FETCH NEXT FROM abc
WHILE (@@FETCH_STATUS = 0)
FETCH NEXT FROM abc;
CLOSE abc;
DEALLOCATE abc;
GO


其他有效的 WHILE 条件测试可能如下所示:

复制代码
WHILE (@ACounterVariable < 100)




复制代码
WHILE EXISTS(SELECT LastName FROM Person.Contact WHERE FirstName = N'Anne')


B. 在嵌套的 IF...ELSE 和 WHILE 中使用 BREAK 和 CONTINUE
在以下示例中,如果产品的平均标价小于 $300,则 WHILE 循环将价格乘 2,然后选择最高价格。如果最高价格小于或等于 $500,则 WHILE 循环重新开始,并再次将价格乘 2。该循环不断地将价格乘 2,直到最高价格超过 $500,然后退出 WHILE 循环,并输出一条消息。

复制代码
USE AdventureWorks;
GO
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
SELECT MAX(ListPrice) FROM Production.Product
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear';

xscansou 2010-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
SQL code
if....else用法

if month(getdate())<7
begin
print('上半年')
select(getdate())
end
else
begin
print('下半年')
select(getdate())
end

--while,continue,break用法

declare @i int
set @i=1
……
[/Quote]
while就够了,就是让它循环就行了.
--小F-- 2010-04-17
  • 打赏
  • 举报
回复
还有GOTO 不写了 一样的用法
--小F-- 2010-04-17
  • 打赏
  • 举报
回复
if....else用法

if month(getdate())<7
begin
print('上半年')
select(getdate())
end
else
begin
print('下半年')
select(getdate())
end

--while,continue,break用法

declare @i int
set @i=1
while @i<20
begin
set @i=@i+1
if @i<=19
continue
print @i
end

declare @i int
set @i=1
while @i<20
begin
if @i=19
break
print @i
set @i=@i+1
end

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧