- 光标
光标被用于通过以记录为单位的操作,来获取数据库中数据的子集,因此程序可以依次丢光标里的每一行进行求职,光标一般用于过程化程序里嵌入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语句就可以释放资源和姓名