SqlServer循环查询

来源:互联网 发布:祁县哪个宽带网络好 编辑:程序博客网 时间:2024/06/07 00:59

1.这里记录一下游标查询的方式,表结构沿用上篇递归调用的表,我们把所有name用游标循环的方式集合到一条数据内显示出来,表结构如下:



2.查询语句如下

BEGINDECLARE @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表示读取成功BEGINSELECT @temp=name FROM companyStructure WHERE id=@id;   --得到本次循环的id,并查询id对应的name,赋值到@temp变量中SET @result = @result + @temp + ',';                    --将@temp结果累加到变量@result中FETCH NEXT FROM tempCursor INTO @id;                    --继续用游标读取下一个数据ENDSELECT @result as 'result';                   --查询结果集@resultEND


3.效果图如下



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

BEGINDECLARE @name VARCHAR(30);DECLARE @result VARCHAR(100);SET @result='';DECLARE tempCursor CURSOR FOR (select name from companyStructure);  --此处直接查询companyStructure中的nameOPEN tempCursor;FETCH NEXT FROM tempCursor INTO @name;  --由id变为nameWHILE @@fetch_status=0BEGINSET @result = @result + @name + ',';  --省去查询,直接拼接字符串FETCH NEXT FROM tempCursor INTO @name;ENDSELECT @result as 'result';END
原创粉丝点击