• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SQL 游标 一个简单的例子

php 搞代码 4年前 (2022-01-04) 25次浏览 已收录 0个评论

来源gaodai#ma#com搞*代#码网

一、游标的作用:

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SQL 游标 一个简单的例子

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址