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 版权协议,转载请附上原文出处链接和本声明。