在 SQL 中,游標是一種臨時的、可以在用戶定義的交互式程序中使用的數據庫對象
要在 SQL 中聲明游標,請使用 DECLARE
語句,后跟游標名稱和 CURSOR
關鍵字。接下來,指定查詢以及可選的游標特性(例如滾動或只讀)。
DECLARE cursor_name CURSOR [SCROLL | NO SCROLL] [READ ONLY | FOR UPDATE] FOR query;
使用 OPEN
語句打開游標以開始處理結果集。
OPEN cursor_name;
使用 FETCH
語句從游標中提取數據。可以使用 NEXT
、PRIOR
、FIRST
、LAST
、ABSOLUTE
或 RELATIVE
關鍵字指定提取行的位置。
FETCH [NEXT | PRIOR | FIRST | LAST | ABSOLUTE row_number | RELATIVE row_number] FROM cursor_name INTO variable_list;
完成游標操作后,使用 CLOSE
語句關閉游標。
CLOSE cursor_name;
最后,使用 DEALLOCATE
語句釋放游標。
DEALLOCATE cursor_name;
示例:
-- 聲明游標
DECLARE emp_cursor CURSOR FOR SELECT * FROM employees;
-- 打開游標
OPEN emp_cursor;
-- 聲明變量
DECLARE @emp_id INT, @emp_name VARCHAR(50);
-- 提取數據
FETCH NEXT FROM emp_cursor INTO @emp_id, @emp_name;
-- 循環處理數據
WHILE @@FETCH_STATUS = 0
BEGIN
-- 在此處處理每一行數據,例如打印員工ID和姓名
PRINT 'Employee ID: ' + CAST(@emp_id AS VARCHAR) + ', Employee Name: ' + @emp_name;
-- 提取下一行數據
FETCH NEXT FROM emp_cursor INTO @emp_id, @emp_name;
END
-- 關閉游標
CLOSE emp_cursor;
-- 釋放游標
DEALLOCATE emp_cursor;
請注意,不同的數據庫管理系統(如 MySQL、PostgreSQL、SQL Server 等)可能有不同的語法和功能支持。因此,在實際應用中,請根據所使用的數據庫系統查閱相應的文檔。