光標被用於經過以記錄爲單位的操做,來獲取數據庫中數據的子集,所以程序能夠依次丟光標裏的每一行進行求職,光標通常用於過程化程序裏嵌入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語句就能夠釋放資源和姓名