sql 游標是一種逐行訪問結果集的機制,類似指針,指向當前行。優勢在于內存消耗低和多次回訪能力,但相對復雜,在 sql server 僅限于存儲過程或 t-sql 批處理。
SQL 游標簡介
SQL 游標是一種允許程序逐行訪問結果集的機制。它類似于指針,指向結果集中的當前行。
實例
創建游標
DECLARE cursor_name CURSOR FOR SELECT * FROM table_name;
登錄后復制
打開游標
OPEN cursor_name;
登錄后復制
獲取當前行
FETCH NEXT FROM cursor_name INTO variable1, variable2, ...;
登錄后復制
使用當前行的值
-- cursor_name print variable1 print variable2
登錄后復制
移動游標
FETCH NEXT:前進到下一行。
FETCH PREVIOUS:后退到上一行。
FETCH FIRST:移動到第一行。
FETCH LAST:移動到最后一行。
關閉游標
CLOSE cursor_name;
登錄后復制
實例
DECLARE employee_cursor CURSOR FOR SELECT employee_id, first_name, last_name FROM employees; OPEN employee_cursor; FETCH NEXT FROM employee_cursor INTO e_id, f_name, l_name; -- 打印當前行值 PRINT e_id, f_name, l_name; -- 移動到下一行 FETCH NEXT FROM employee_cursor INTO e_id, f_name, l_name; -- 打印當前行值 PRINT e_id, f_name, l_name; CLOSE employee_cursor;
登錄后復制
優點
逐行處理結果集,減少內存消耗。
允許對結果集進行多次回訪問。
提高性能,尤其是在處理大型結果集時。
缺點
比其他方法更復雜。
在 SQL Server 中,只能在 stored procedures或 T-SQL 批處理中使用。