SqlServer查询-循环查询

  • Post author:
  • Post category:其他


1.这里记录一下游标查询的方式,表结构沿用上篇递归调用的表(

https://blog.csdn.net/sanbowla/article/details/73331167

),我们把所有name用游标循环的方式集合到一条数据内显示出来,表结构如下:

2.查询语句如下

BEGIN
	DECLARE @id INT;
	DECLARE @temp VARCHAR(20);
	DECLARE @result VARCHAR(100);
	SET @result='';
	DECLARE tempCursor CURSOR FOR (select id from companyStructure);   --创建游标tempCursor,并定义游标所指向的集合	
	OPEN tempCursor;                              --打开游标
	FETCH NEXT FROM tempCursor INTO @id;          --游标读取下一个数据
	WHILE @@fetch_status=0                        --游标读取下一个数据的状态,0表示读取成功
		BEGIN
			SELECT @temp=name FROM companyStructure WHERE id=@id;   --得到本次循环的id,并查询id对应的name,赋值到@temp变量中
			SET @result = @result + @temp + ',';                    --将@temp结果累加到变量@result中
			FETCH NEXT FROM tempCursor INTO @id;                    --继续用游标读取下一个数据
		END
	SELECT @result as 'result';                   --查询结果集@result
END

3.效果图如下

4.实际上2步骤中是想多记录一些操作方式,如查询语句如何给变量赋值、累加等,更直接的方式如下

BEGIN
	DECLARE @name VARCHAR(30);
	DECLARE @result VARCHAR(100);
	SET @result='';
	DECLARE tempCursor CURSOR FOR (select name from companyStructure);  --此处直接查询companyStructure中的name
	OPEN tempCursor;
	FETCH NEXT FROM tempCursor INTO @name;  --由id变为name
	WHILE @@fetch_status=0
		BEGIN
			SET @result = @result + @name + ',';  --省去查询,直接拼接字符串
			FETCH NEXT FROM tempCursor INTO @name;
		END
	SELECT @result as 'result';
END



版权声明:本文为sanbowla原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。