文档库 最新最全的文档下载
当前位置:文档库 › SQL循环语句

SQL循环语句

在sqlserver 数据库中,循环语句是最常用的语句之一,下面就将为您分析SQL循环语句的例子,供您参考,希望对您有所启迪。

SQL循环语句

declare @i int

set @i=1

while @i<30

begin

insert into test (userid) values(@i)

set @i=@i+1

end

--------------------------

while 条件

begin

执行操作

set @i=@i+1

end

WHILE

设置重复执行SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK 和CONTINUE 关键字在循环内部控制WHILE 循环中语句的执行。

语法

WHILE Boolean_expression

{ sql_statement | statement_block }

[ BREAK ]

{ sql_statement | statement_block }

[ CONTINUE ]

参数

Boolean_expression

返回TRUE 或FALSE 的表达式。如果布尔表达式中含有SELECT 语句,必须用圆括号将SELECT 语句括起来。

{sql_statement | statement_block}

Transact-SQL 语句或用语句块定义的语句分组。若要定义语句块,请使用控制流关键字BEGIN 和END。

BREAK

导致从最内层的WHILE 循环中退出。将执行出现在END 关键字后面的任何语句,END 关键字为循环结束标记。

CONTINUE

使WHILE 循环重新开始执行,忽略CONTINUE 关键字后的任何语句。

注释

如果嵌套了两个或多个WHILE 循环,内层的BREAK 将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。

示例

A. 在嵌套的IF...ELSE 和WHILE 中使用BREAK 和CONTINUE

在下例中,如果平均价格少于$30,WHILE 循环就将价格加倍,然后选择最高价。如果最

高价少于或等于$50,WHILE 循环重新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过$50,然后退出WHILE 循环并打印一条消息。

USE pubs

GO

WHILE (SELECT A VG(price) FROM titles) < $30

BEGIN

UPDATE titles

SET price = price * 2

SELECT MAX(price) FROM titles

IF (SELECT MAX(price) FROM titles) > $50

BREAK

ELSE

CONTINUE

END

PRINT 'Too much for the market to bear'

B. 在带有游标的过程中使用WHILE

以下的WHILE 结构是名为count_all_rows 过程中的一部分。下例中,该WHILE 结构测试用于游标的函数@@FETCH_STATUS 的返回值。因为@@FETCH_STA TUS 可能返回–2、-1 或0,所以,所有的情况都应进行测试。如果某一行在开始执行此存储过程以后从游标结果中删除,将跳过该行。成功提取(0) 后将执行BEGIN...END 循环内部的SELECT 语句。

USE pubs

DECLARE tnames_cursor CURSOR

FOR

SELECT TABLE_NAME

FROM INFORMA TION_SCHEMA.TABLES

OPEN tnames_cursor

DECLARE @tablename sysname

--SET @tablename = 'authors'

FETCH NEXT FROM tnames_cursor INTO @tablename

WHILE (@@FETCH_STA TUS <> -1)

BEGIN

IF (@@FETCH_STATUS <> -2)

BEGIN

SELECT @tablename = RTRIM(@tablename)

EXEC ('SELECT ''' + @tablename + ''' = count(*) FROM '

+ @tablename )

PRINT ' '

END

FETCH NEXT FROM tnames_cursor INTO @tablename

END

CLOSE tnames_cursor

DEALLOCATE tnames_cursor

===================================================

可以用变量的形式来增加,不过你的userid 三位显然不够,因为你要加10000数据,所以要和authnum形式一样,5位才够

下面是一个简单的例子,你可以根据实际需求来改一下。

DECLARE @i int

DECLARE @strUserId varchar(10)

DECLARE @strAuthnum varchar(10)

Set @i = 0

WHILE @i < 10000

BEGIN

Set @i =@i +1

SET @strUserId = RIGHT('00000' + CAST(@i AS varchar(10)),5)

SET @strAuthnum = @strUserId

insert into user_info values(@strUserId,@strAuthnum)

END

(注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注)

相关文档