高級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語句就能夠釋放資源和姓名
相關文章
相關標籤/搜索