在 SQL 中,您可以使用游标(cursor)来逐行处理查询结果,并根据需要对数据进行动态更新
-- 创建一个名为 employees 的表格
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2)
);
-- 向表格中插入一些示例数据
INSERT INTO employees (id, name, salary)
VALUES (1, 'Alice', 5000.00),
(2, 'Bob', 6000.00),
(3, 'Charlie', 7000.00);
-- 声明一个游标,用于查询 employees 表格中的所有记录
DECLARE cur CURSOR FOR
SELECT id, name, salary
FROM employees;
-- 声明变量,用于存储游标中的数据
DECLARE @id INT, @name VARCHAR(50), @salary DECIMAL(10, 2);
-- 打开游标
OPEN cur;
-- 获取游标中的第一条记录
FETCH NEXT FROM cur INTO @id, @name, @salary;
-- 循环处理游标中的每一条记录
WHILE @@FETCH_STATUS = 0
BEGIN
-- 对 salary 进行动态更新(例如,增加 10%)
SET @salary = @salary * 1.1;
-- 更新 employees 表格中的数据
UPDATE employees
SET salary = @salary
WHERE id = @id;
-- 获取游标中的下一条记录
FETCH NEXT FROM cur INTO @id, @name, @salary;
END;
-- 关闭游标
CLOSE cur;
-- 释放游标资源
DEALLOCATE cur;
-- 查看更新后的 employees 表格数据
SELECT * FROM employees;
这个示例首先创建了一个名为 employees
的表格,并向其中插入了一些示例数据。然后,我们声明了一个游标(cur
),用于查询 employees
表格中的所有记录。接下来,我们声明了一些变量,用于存储游标中的数据。
在循环中,我们逐行处理游标中的记录,并根据需要对数据进行动态更新。在本示例中,我们将每个员工的薪水增加了 10%。最后,我们关闭并释放游标资源,并查看更新后的表格数据。