Sqlserver存储过程如何写循环

2022-08-17 13:59:29 浏览数 (2)

1.简单的循环语句

代码语言:javascript复制
declare @i int
set @i = 0
while @i < 100
begin
	print @i
	set @i = @i   1
end

2.使用Sqlserver自带的while循环来循环表数据

代码语言:javascript复制
-- 定义循环变量
declare @loopIndex int set @loopIndex = 0
--定义循环次数
declare @count int set @count=1
-- 取得循环次数
select @count=count(1) from sys_user
-- 开始循环
while @loopIndex <= @count
begin
  -- 定义接收参数
  declare @USER_NAME nvarchar(50)
	-- 取得循环的数据
	SELECT @USER_NAME = hh.USER_NAME
	FROM (SELECT ROW_NUMBER() OVER (ORDER BY USER_NAME) 'rowindex',USER_NAME FROM sys_user)hh 
	WHERE hh.rowindex = @loopIndex
	-- 进行相关业务逻辑 例如输出结果 
	print @USER_NAME
	-- 循环自动加一
	set @loopIndex = @loopIndex   1
end

3.使用游标循环

代码语言:javascript复制
begin
  -- 定义错误返回信息
  declare @error int 
	-- 定义接收参数
  declare @User_Name varchar(50)
  declare @Address varchar(50)

  set @error=0
  --定义游标
  declare demo_cursor cursor
  for (select User_Name,Address from sys_user)

  --打开游标--
  open demo_cursor
  --开始循环游标变量--
  fetch next from demo_cursor into @User_Name,@Address
  while @@FETCH_STATUS = 0  --返回被 FETCH语句执行的最后游标的状态--
    begin       
      print @User_Name '____' @Address
      set @error= @error   @@ERROR  --记录每次运行sql后是否正确,0正确
      fetch next from demo_cursor into @User_Name,@Address  --转到下一个游标,没有会死循环
    end  
  close demo_cursor --关闭游标
  deallocate demo_cursor  --释放游标
end

0 人点赞