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和平均薪水。最后,我们关闭游标并释放它。