SQL 游标 一个简单的例子
2012-07-20 09:06
459 查看
一、游标的作用:
Select时,返回的是一个结果集,若需要为结果集返回的过程中,读取到一行数据。需要对此行数据进行处理,比如按读取到的数据作为查询条件返回一个查询结果集等等,应用都需要用到游标。
游标可允许 用户 查询下一行、上一行、第一行或最后一行,并对这些读取到的行进行处理。
二、游标举例
Select时,返回的是一个结果集,若需要为结果集返回的过程中,读取到一行数据。需要对此行数据进行处理,比如按读取到的数据作为查询条件返回一个查询结果集等等,应用都需要用到游标。
游标可允许 用户 查询下一行、上一行、第一行或最后一行,并对这些读取到的行进行处理。
二、游标举例
CREATE FUNCTION GetMRPlnFullBom --创建一函数,根据单据电键查询单据中每行,并对每行数据进行处理。 ( @DocEntry int ) RETURNS @TAB TABLE -- 将最终查询的结果集定义临时表,返回。 ( DocEntry int, LineNum int, LineNumLevel nvarchar(100), ItmID nvarchar(20), ItmName nvarchar(100), LineType char(1), Qty numeric(19,9), BomLevel int, ParentEntry int, ParentItmID nvarchar(20), TopEntry int, TopItmID nvarchar(20) , BaseEntry int , BaseLineNum int , BaseType int ) AS BEGIN Declare @ItmID varchar(50) , @Qty int ,@LineNum int ,@ObjType int --声明局部变量 --声明一游标,声明游标时 XXX前不能加@,比如下面的MRPlnA_ItmID ,格式是DECLARE XXX CURSOR FOR DECLARE MRPlnA_ItmID CURSOR FOR SELECT ItmID , Qty ,LineNum , ObjType FROM MRPlnA Where DocEntry = @DocEntry --语句要在DECLARE XXX CURSOR FOR与OPEN XXX之间。 Open MRPlnA_ItmID --打开游标 FETCH NEXT FROM MRPlnA_ItmID INTO @ItmID , @Qty ,@LineNum , @ObjType --FETCH NEXT FROM XXX INTO ... 更新游标指定记录即换行,并将Select出来的数据,存入临时变量中。 FETCH格式上除了NEXT还有PRIOR、FRIST、LAST。分别是上一行、第一行及最后一行。 WHILE @@FETCH_STATUS = 0 --@@FETCH_STATUS全局变量,用于查询FETCH最后一次状态,控制循环。当读取完时是0,读取失败是-1,记录被删除是-2。 BEGIN Insert Into @TAB Select DocEntry,LineNum,LineNumLevel,ItmID,ItmName,LineType,Qty*@Qty,BomLevel,ParentEntry, ParentItmID,TopEntry,TopItmID , @DocEntry SourceEntry ,@LineNum BaseLineNum ,@ObjType BaseType From GetBomFullItems(@ItmID, 'V 1.0', GetDate()) TD --GetBomFULLItmes是另一查询函数。 FETCH NEXT FROM MRPlnA_ItmID INTO @ItmID , @Qty ,@LineNum , @ObjType -- Select移到下一行。 END CLOSE MRPlnA_ItmID --关闭游标 DEALLOCATE MRPlnA_ItmID --释放游标 RETURN END
相关文章推荐
- 一个简单的sql的游标处理结果集的例子
- SQL 游标 一个简单的例子
- sql关于游标和游标、存储过程结合的一个例子
- 一个简单的SQL游标示例的存储过程
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- 一个简单的EXCEL 导入SQL 的例子
- 一个简单的演示SQL2005的查询通知的例子
- SQL游标使用简单例子
- 一个最简单的使用Entity Framework 查询SQL 数据库的例子
- 一个简单的PL/SQL的例子
- 自适应游标共享技术02(一个简单的例子来走近ACS)
- 一个简单的SqlServerCe + Entity Framework 5 Code First + MVC4 + Ajax例子(上)
- 一个游标简单例子
- PL/SQL 一个简单游标的使用
- 一个简单的LINQ TO SQL的三层架构的例子
- sql 游标简单的例子
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- 通过一个简单的例子,介绍如何使用LDAP(转)
- ORACLE中一个简单的UNPIVOT例子
- 实现一个简单的工作流例子全过程