不用游标 遍历记录的sql语句

 

-- 声明变量表@tb
declare   @tb   table (id  int ,name  varchar ( 50 ))

-- 添加测试数据
insert   into   @tb
select    6 , ' aa '   union   all
select    7 , ' bb '   union   all
select    8 , ' cc '   union   all
select    9 , ' dd '   union   all
select    10 , ' abc '   union   all
select    11 , ' ddef '   union   all
select    12 , ' fda '   union   all
select    13 , ' rewr '   union   all
select    14 , ' eyt '   union   all
select    15 , ' jjy '   union   all
select    16 , ' bbbxd '   union   all
select    17 , ' xxx '   union   all
select    18 , ' ffff '   union   all
select    19 , ' wwwwwwww '   union   all
select    20 , ' aaaaaaaaaa '   

/*
查看表中数据
select * from @tb 
*/

-- 声明循环用的“指针”
declare   @min   varchar ( 5 )
-- 赋初值
select    @min = min (id)  from   @tb   
-- 开始循环
while   @min   is   not   null
begin
  
print   @min    -- 打印当前“指针”的值
   select    @min = min (id)  from   @tb   where  id > @min    -- 更新“指针”内容,使之移到下一记录
end

转载于:https://www.cnblogs.com/ztotem/archive/2008/11/04/1326217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL 中,可以使用游标(CURSOR)来遍历整张表。游标可以在查询结果集上进行操作,类似于在程序中使用指针来遍历数据。 以下是一个遍历整张表的示例: ```sql DECLARE @id INT, @name VARCHAR(50) DECLARE cursor_name CURSOR FOR SELECT id, name FROM table_name OPEN cursor_name FETCH NEXT FROM cursor_name INTO @id, @name WHILE @@FETCH_STATUS = 0 BEGIN -- 执行需要循环的操作 PRINT 'id: ' + CONVERT(VARCHAR, @id) + ', name: ' + @name FETCH NEXT FROM cursor_name INTO @id, @name END CLOSE cursor_name DEALLOCATE cursor_name ``` 以上代码中,首先使用 DECLARE 语句声明了两个变量 `@id` 和 `@name`,用于存储查询结果中的 `id` 和 `name`。然后使用 DECLARE CURSOR 语句声明一个游标 `cursor_name`,并使用 SELECT 语句查询整张表中的数据。接着使用 OPEN 语句打开游标,并使用 FETCH NEXT 语句将游标定位到第一行数据,将查询结果中的 `id` 和 `name` 分别赋值给变量 `@id` 和 `@name`。 在 WHILE 循环中,首先判断当前 FETCH 语句的执行状态 `@@FETCH_STATUS` 是否为 0,如果是,则继续执行循环体内的操作。在循环体内,可以执行需要循环的操作,例如打印当前行数据。然后使用 FETCH NEXT 语句将游标定位到下一行数据,再次将查询结果中的 `id` 和 `name` 分别赋值给变量 `@id` 和 `@name`。 在循环结束后,需要使用 CLOSE 语句关闭游标,并使用 DEALLOCATE 语句释放游标所占用的资源。 需要注意的是,游标的使用可能会影响查询性能,所以在实际应用中需要谨慎使用。同时,游标的语法和使用方法可能会因不同的数据库而有差异,以上代码仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值