SQL Server 存储过程和循环控制语句

在数据库编程中,经常需要执行重复的任务。SQL Server提供了多种循环控制语句来帮助实现这些任务。本文将介绍如何在 SQL Server 中使用存储过程和循环控制语句,如 WHILE、BREAK 和 CONTINUE。

WHILE 循环

WHILE 语句用于重复执行一个代码块,直到条件不再满足。以下是一个使用 WHILE 循环创建临时表并插入数据的例子。

DECLARE @myTable TABLE(WeekNumber INT, DateStarting SMALLDATETIME); DECLARE @n INT = 0; DECLARE @firstWeek SMALLDATETIME = '12/31/2017'; WHILE @n <= 52 BEGIN INSERT INTO @myTable VALUES (@n, DATEADD(wk, @n, @firstWeek)); SELECT @n = @n + 1; END; SELECT WeekNumber, DateStarting FROM @myTable;

在这个例子中,使用 DATEADD 函数来计算每周的开始日期。WHILE 循环会一直执行,直到变量 @n 大于 52。每次循环,@n 都会增加 1,以确保循环最终会结束。

使用 BREAK 语句

BREAK 语句用于强制退出 WHILE 循环。以下是一个使用 BREAK 语句的例子。

DECLARE @myTable TABLE(WeekNumber INT, DateStarting SMALLDATETIME); DECLARE @n INT = 0; DECLARE @firstWeek SMALLDATETIME = '12/31/2017'; WHILE @n > -1 BEGIN INSERT INTO @myTable VALUES (@n, DATEADD(wk, @n, @firstWeek)); SELECT @n = @n + 1; IF @n > 52 BREAK; END;

在这个例子中,WHILE 循环的条件总是为 TRUE,因为 @n 总是大于或等于 0。IF 语句检查结束条件,如果为 TRUE,则执行 BREAK 语句,退出循环。

使用 CONTINUE 语句

CONTINUE 语句用于重置 WHILE 循环的代码块。以下是一个使用 CONTINUE 语句的例子。

DECLARE @myTable TABLE(WeekNumber INT, DateStarting SMALLDATETIME); DECLARE @n INT = 0; DECLARE @firstWeek SMALLDATETIME = '12/31/2017'; WHILE @n > -1 BEGIN INSERT INTO @myTable VALUES (@n, DATEADD(wk, @n, @firstWeek)); SELECT @n = @n + 1; IF @n > 52 BREAK; ELSE CONTINUE; PRINT 'I Never get executed'; END;
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485