高级SQL主题

  • 光标

光标被用于经过以记录为单位的操做,来获取数据库中数据的子集,所以程序能够依次丢光标里的每一行进行求职,光标通常用于过程化程序里嵌入SQL语句sql

简单理解能够存储一个查询返回的多行数据数据库

  • 光标的声明

MySQL里对光标的声明语法spa

DECLARE CURSOR_NAME CURSOR
FOR SELECT_STATEMENT

SQL Servercode

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语句就能够释放资源和姓名
相关文章
相关标签/搜索