//下面讲下SQL中不太常用的高级功能,利用游标操作及递归查询,请看实例
//1:用游标实现批量修改数据
//原理:1:请出一个表中的数据放在游标的临时表中,
// 2:fetch next from testcur info 来循环表中的每条数据
// 3:对每条数据进行修改 或者 删除操作
create table test
(
iId int identity(1,1) primary key,
tag nvarchar(10),
state1 nvarchar(10),
state2 nvarchar(10),
state3 nvarchar(10),
state4 nvarchar(10)
)
declare @tempid int
declare @temptag nvarchar(10)
declare testcur cursor for select iId, tag from test
open testcur
fetch next from testcur into @tempid, @temptag
while @@FETCH_STATUS=0 -- 0 = 语句执行成功 -1 = 语句失败或此句不在结果集中 -2 = 被提取的行不存在
begin
print @@FETCH_STATUS
fetch next from testcur into @tempid, @temptag
end
close testcur
deallocate testcur
//2:CET(递归查询)
//步骤: 1:建一个经典的递归表结构
// 2:用 with as 来对表进行递归查询
create table Tree
(
NodeId int ,
ParentId int,
NodeName nvarchar(50)
)
insert Tree(NodeId, ParentID, NodeName) values (0,-1,'全球')
insert Tree(NodeId, ParentID, NodeName) values (1,0,'美国')
insert Tree(NodeId, ParentID, NodeName) values (2,0,'中国')
insert Tree(NodeId, ParentID, NodeName) values (3,0,'德国')
insert Tree(NodeId, ParentID, NodeName) values (4,2,'四川省')
insert Tree(NodeId, ParentID, NodeName) values (5,2,'广东省')
insert Tree(NodeId, ParentID, NodeName) values (6,2,'山东省')
insert Tree(NodeId, ParentID, NodeName) values (7,4,'成都市')
insert Tree(NodeId, ParentID, NodeName) values (8,4,'泸州市')
insert Tree(NodeId, ParentID, NodeName) values (9,4,'乐山市')
insert Tree(NodeId, ParentID, NodeName) values (10,8,'纳溪区')
insert Tree(NodeId, ParentID, NodeName) values (11,8,'江阳区')
insert Tree(NodeId, ParentID, NodeName) values (12,8,'龙马潭')
insert Tree(NodeId, ParentID, NodeName) values (13,10,'护国镇')
insert Tree(NodeId, ParentID, NodeName) values (14,10,'合面镇')
insert Tree(NodeId, ParentID, NodeName) values (15,10,'丰乐镇')
insert Tree(NodeId, ParentID, NodeName) values (16,13,'大营村')
insert Tree(NodeId, ParentID, NodeName) values (17,13,'沙田村')
insert Tree(NodeId, ParentID, NodeName) values (18,13,'东巷口')
WITH OrderList
AS
(
select * from Tree
where NodeName='纳溪区'
union all
SELECT t.*
from Tree as t,OrderList as ol
where ol.ParentID = t.NodeId /*递归查询*/
)
select * from OrderList
OPTION (MAXRECURSION 10);
with temptree as
(
select * from tree where NodeName = '全球'
union all
select t.NodeId, t.ParentId, t.NodeName
from tree as t , temptree as tt
where t.ParentID = tt.NodeId
)
select tt.* from tree as t , temptree as tt
where t.NodeId = tt.parentID
文章来自学IT网:http://www.xueit.com/Mssql/show-5096-2.aspx
分享到:
相关推荐
### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...
在SQL编程中,游标(Cursor)是一种非常重要的工具,它允许我们按需逐行处理结果集,这对于处理批量数据或者进行复杂的数据操作至关重要。游标对于初学者来说可能有些抽象,但一旦掌握了其基本使用方法,就能在很多...
SQL Server对游标的使用要遵循:声明游标–打开游标–读取数据–关闭游标–删除游标。下面让我们来看看几种常用游标是怎么使用的! 1、只读游标的使用(只能使用next提取数据) --声明一个只读游标 declare cur_stu ...
### 存储过程与游标的综合应用:批量插入数据 #### 一、存储过程简介 在数据库管理系统(DBMS)中,存储过程是一种预编译的SQL代码块,它可以接受输入参数并返回输出值,类似于编程语言中的函数或过程。通过创建...
在数据库管理中,游标是一种非常重要的工具,尤其在需要对数据进行逐条处理或批量修改时。游标允许开发者按需遍历查询结果集,对每一行数据执行特定的操作。在本例中,我们将详细讨论如何使用游标批量更改表中的数据...
根据提供的文件信息,我们可以总结出以下SQL数据库使用游标及随机插入数据的相关知识点: ### SQL 游标的使用 #### 1. 游标定义 游标是数据库中的一个临时存储区域,它允许用户通过逐行的方式处理结果集中的数据。...
### SQL Server 游标的使用与事务管理 #### 一、游标的使用方法 在 SQL Server 中,游标是一种用于处理结果集中的数据行的一种机制。它允许开发人员逐行访问查询的结果,这对于需要对每一条记录进行特定操作的场景...
在SQL Server中,游标是一种重要的工具,它允许我们逐行处理查询结果集,而不仅仅是一次性获取所有数据。游标提供了在结果集中向前或向后移动的能力,这在某些复杂的数据处理任务中非常有用。本篇文章将深入探讨SQL ...
sqlserver递归查询树结构的表的根结点子最里层的子结点
例如,使用游标遍历表中的每一行,然后通过函数处理每行的特定字段,实现批量数据的修改或计算。 在提供的文件"SQL游标t和函数的用法.sql"中,很可能是包含了一些示例代码,演示如何在SQL Server中使用游标和函数。...
通过上述示例,我们了解了如何使用SQL游标来处理查询结果集中的每一行数据。游标提供了一种灵活的方式来处理需要逐行访问数据的情况。然而,在实际应用中需要注意的是,尽管游标在某些场景下非常有用,但由于它们...
sql server 游标 使用的使用方法 --读取数据(使用FETCH来获取该记录的值;FETCH会执行两步操作:首先将游标当前指向的记录保存到一个局部变量中, --然后游标将自动移向下一条记录) --将一条或多条记录读入某个...
本篇文章将深入探讨SQL游标的实例应用,帮助你掌握其使用技巧。 首先,我们要理解SQL游标的几个基本概念。游标有四个关键属性:%FOUND、%NOTFOUND、%ISOPEN和%ROWCOUNT。%FOUND用于检查是否在上次提取操作中找到一...
本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。
使用游标更新数据库是指在游标定位下,修改或删除表中指定的数据行。使用游标对数据进行更新可以提高数据库的性能和效率。 1. 游标更新的基本概念 游标是数据库中的一种数据结构,它可以用来存储和处理查询结果。...
### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...
在SQL Server中,游标(Cursor)是一种数据库查询机制,它允许我们一次处理查询结果集中的单行数据,而不是一次性获取整个结果集。游标在处理大量数据时特别有用,尤其是当我们需要逐行进行操作或者根据当前行的值来...
sql server 游标范例,多个demo基本涵盖了游标的使用技巧
静态、动态SQL及各种游标 静态SQL和动态SQL是两种不同的SQL语句执行方式,分别应用于不同的场景中。静态SQL是指在PL/SQL中直接运行的SQL语句,没有什么特别之处。动态SQL则是指利用EXECUTE IMMEDIATE语句执行的SQL...