SQL游標是一種數據庫對象,用于從結果集中檢索數據
假設我們有一個名為employees
的表,其中包含以下列:employee_id
(員工ID),first_name
(名),last_name
(姓),salary
(薪水)和department_id
(部門ID)。我們希望找到每個部門的平均薪水,并將結果按部門ID排序。
以下是使用SQL游標實現此查詢的示例:
-- 聲明變量以存儲部門ID和平均薪水
DECLARE @department_id INT;
DECLARE @average_salary DECIMAL(10, 2);
-- 聲明游標
DECLARE employee_cursor CURSOR FOR
SELECT department_id, AVG(salary) AS average_salary
FROM employees
GROUP BY department_id
ORDER BY department_id;
-- 打開游標
OPEN employee_cursor;
-- 遍歷游標中的每一行
FETCH NEXT FROM employee_cursor INTO @department_id, @average_salary;
-- 檢查是否還有下一行
WHILE @@FETCH_STATUS = 0
BEGIN
-- 打印當前行的部門ID和平均薪水
PRINT 'Department ID: ' + CAST(@department_id AS VARCHAR) + ', Average Salary: ' + CAST(@average_salary AS VARCHAR);
-- 移動到下一行
FETCH NEXT FROM employee_cursor INTO @department_id, @average_salary;
END
-- 關閉游標
CLOSE employee_cursor;
-- 釋放游標
DEALLOCATE employee_cursor;
在這個示例中,我們首先聲明了兩個變量@department_id
和@average_salary
,用于存儲每個部門的ID和平均薪水。然后,我們聲明了一個名為employee_cursor
的游標,用于從employees
表中檢索每個部門的平均薪水。接下來,我們打開游標,遍歷游標中的每一行,并打印部門ID和平均薪水。最后,我們關閉游標并釋放它。