cursor游标Word格式文档下载.docx
- 文档编号:4072990
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:6
- 大小:16.83KB
cursor游标Word格式文档下载.docx
《cursor游标Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《cursor游标Word格式文档下载.docx(6页珍藏版)》请在冰点文库上搜索。
1.3.1声明游标
最简单游标声明:
DECLARE<
游标名>
CURSORFOR<
SELECT语句>
;
其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询
1.3.2打开游标
非常简单,我们就打开刚才我们声明的游标mycursor
OPENmycursor
1.3.3读取数据
FETCH[NEXT|PRIOR|FIRST|LAST]FROM{游标名|@游标变量名}[INTO@变量名[,…]]
参数说明:
NEXT取下一行的数据,并把下一行作为当前行(递增)。
由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCHNEXT操作将取得游标集中的第1行数据。
NEXT为默认的游标提取选项。
INTO@变量名[,…]把提取操作的列数据放到局部变量中。
列表中的各个变量从左到右与游标结果集中的相应列相关联。
各变量的数据类型必须与相应的结果列的数据类型匹配或是结果列数据类型所支持的隐性转换。
变量的数目必须与游标选择列表中的列的数目一致。
1.3.4关闭游标
CLOSEmycursor
1.3.5删除游标
DEALLOCATEmycursor
给出具体的例子:
*/
----------------------------------------------
declare@IDnvarchar(20);
--定义变量来保存ID号
declare@DATEDATETIME;
DECLARE@DFDNVARCHAR(200);
--定义变量来保存值
SET@DFD='
'
;
declaremycursorcursorfor
selectMID,CreatedDatefromFD_Menu--为所获得的数据集指定游标
openmycursor--打开游标
fetchnextfrommycursorinto@ID,@DATE--开始抓第一条数据
while(@@fetch_status=0)--如果数据集里一直有数据
begin
--selecttb_b.name,(tb_b.gz+@A)fromtb_bwheretb_b.id=@id--开始做想做的事(什么更新呀,删除呀)
SET@DFD=@DFD+CAST(@IDASNVARCHAR)+'
.V.'
+CONVERT(NVARCHAR,@DATE,111);
select@DFD;
fetchnextfrommycursorinto@ID,@DATE--跳到下一条数据
end
closemycursor--关闭游标
deallocatemycursor--删除游标
-------------------------------------------------------------------------
-----------------------循环示例------------------------------------------
TRUNCATETABLEV_TEST
DECLARE@iINT;
SET@i=1;
WHILE@i<
1000
BEGIN
INSERTINTOV_TEST(V_Name,V_DESC)values('
IamV'
+str(@i),'
Victor'
+str(1000-@i))
SET@i=@i+1
END
SELECT*FROMV_TEST
DECLARE@IDBIGINT;
DECLARE@NAMENVARCHAR(50);
DECLAREV_CURSORCURSORFOR(
SELECTV_ID,V_NameFROMV_TESTWHERERIGHT(V_NAME,2)='
10'
)
OPENV_CURSOR;
FETCHNEXTFROMV_CURSORINTO@ID,@NAME
WHILE(@@FETCH_STATUS=0)
PRINTCAST(@IDASNVARCHAR)+@NAME;
FETCHNEXTFROMV_CURSORINTO@ID,@NAME;
CLOSEV_CURSOR;
DEALLOCATEV_CURSOR;
-------------------------------------------------------------------------------------
/*
声明SCROLL游标并使用其它FETCH选项
scroll表示可随意移动游标指针(否则只能向前)
下例创建一个SCROLL游标,使其通过LAST、PRIOR、RELATIVE和ABSOLUTE选项支持所有滚动能力。
--声明局部变量
DECLAREV_CURSORSCROLLCURSORFOR
SELECTV_ID,V_NameFROMV_TEST;
--定位到指定位置的记录
FETCHABSOLUTE50fromV_CURSORinto@ID,@NAME
select@idasid,@nameasname
--定位到当前记录相对位置记录
FETCHRELATIVE-30fromV_CURSORinto@id,@name
--定位到当前记录前一条
fetchpriorfromV_CURSORinto@id,@name
--定位到当前记录后一条
fetchnextfromV_CURSORinto@id,@name
--定位到首记录
fetchfirstfromV_CURSORinto@id,@name
--定位到尾记录
fetchlastfromV_CURSORinto@id,@name
DECLAREV_CURSORCURSORSCROLLFOR(
FETCHRELATIVE2FROMV_CURSORINTO@ID,@NAME;
dynamic表示可以读写游标(否则游标只读)
UPDATEV_TESTSETV_DESC='
Victor199'
WHERECURRENTOFV_CURSOR
DECLAREV_CURSORCURSORSCROLLDYNAMIC
/*scroll表示可随意移动游标指针(否则只能向前)
dynamic表示可以读写游标(否则游标只读)*/
FOR
SELECTV_DESCFROMV_TESTWHERECAST(RIGHT(V_DESC,3)ASINT)<
200
OPENV_CURSOR
DECLARE@DESCNVARCHAR(50)
FETCHNEXTFROMV_CURSORINTO@DESC
WHILE(@@fetch_status=0)
PRINT'
ProductName:
'
+@DESC
FETCHNEXTFROMV_CURSORINTO@DESC
FETCHFIRSTFROMV_CURSORINTO@DESC
print@DESC
updateV_TESTsetV_DESC='
123122'
/**//*deletefromproductwherecurrentofmy_cursor*/
CLOSEV_CURSOR
DEALLOCATEV_CURSOR
----------------------------------------------------------------
WHEREV_ID=801
---------------------------------------------------------------------------
declaremy_cursor1cursorfor
selectnContentId,dtEditTimefromcontentwheredatepart(month,dtEditTime)='
9'
anddatepart(day,dtEditTime)='
26'
openmy_cursor1
declare@datesysname
declare@nIDsysname
declare@tempDatedatetime
fetchnextfrommy_cursor1into@nID,@date
while(@@fetch_status=0)
set@tempDate=dateadd(day,87,@date)
--print@tempDate
updateContentsetdtEditTime=@tempDatewherenContentId=@nID
fetchnextfrommy_cursor1into@nID,@date
closemy_cursor1
deallocatemy_cursor1
-----------------------
DECLARE@JJNVARCHAR(10)
SET@JJ='
12345'
SET@JJ=RIGHT(@JJ,LEFT(@JJ,1))
PRINT@JJ
----------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cursor 游标
![提示](https://static.bingdoc.com/images/bang_tan.gif)