高级SQL主题

  • 光标

光标被用于通过以记录为单位的操作,来获取数据库中数据的子集,因此程序可以依次丢光标里的每一行进行求职,光标一般用于过程化程序里嵌入SQL语句

简单理解可以存储一个查询返回的多行数据

  • 光标的声明

MySQL里对光标的声明语法

DECLARE CURSOR_NAME CURSOR
FOR SELECT_STATEMENT

SQL Server

DECLARE CURSOR_NAME CURSOR
FOR SELECT_STATEMENT 
[ FOR [READ ONLY | UPDATE{[COLUMN_LIST]}]

Oracle

DECLARE CURSOR_NAME CURSOR
IS {SELECT_STATEMENT}

 

  • 打开光标

要使用光标,必须首先打开光标,当光标被打开时,指定光标的SELECT语句被执行,查询的结果被保存在内存里的特定区域

--在MySQL和Microsoft SQL Sever中打开一个光标
OPEN CURSOR_NAME

--在Oracle里的语法
OPEN CURSOR_NAME[ PARAMETER1 [,PARAMETER2]]
  • 从光标获取数据

MySQL

FETCH CURSOR_NAME INTO VRAIBLE_NAME,[VARIABLE_NAME]...

 

--用FETCH语句将 EMP_CURSOR里的内容获取到变量EMP_RECORD
FETCH EMP_CURSOR INTO EMP_RECORD

 

Oracle

FETCH CURSOR_NAME{INTO :HOST_VARIABLE
[[INDICATOR]:INDICATOR_VARIABLE]
[,:HOST_VARIABLE
[[INDICATOR]:INDICATOR_VARIABLE]
|USING DESCRIPTOR DESCRIPTOR]}

SQL Server

FETCH NEXT FROM CURSOR_NAME[INTO FETCH_LIST]

 

  • 关闭光标

SQL  Server

--关闭光标
CLOSE CURSOR_NAME
--释放光标
DEALLOCATE CURSOR CURSOR_NAME

 

MySQL和Oracle

CLOSE CURSOR_NAME
--Mysql和Oracle不必使用DEALLOCATE语句就可以释放资源和姓名

 

转载于:https://my.oschina.net/u/1785519/blog/1566356

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值