Oracle 动态游标示例:使用表行类型作为游标变量类型
以下是一个使用动态游标的示例,其中游标变量的类型为一个表的行的类型:
DECLARE
-- 定义游标变量类型
TYPE emp_record_type IS RECORD (
emp_id NUMBER,
emp_name VARCHAR2(100),
emp_salary NUMBER
);
-- 定义游标变量
emp_cursor SYS_REFCURSOR;
-- 定义游标变量的结果集
emp_record emp_record_type;
BEGIN
-- 打开游标
OPEN emp_cursor FOR
SELECT employee_id, first_name, salary
FROM employees;
-- 用游标遍历结果集
LOOP
-- 读取游标的下一行
FETCH emp_cursor INTO emp_record;
-- 如果没有更多行,退出循环
EXIT WHEN emp_cursor%NOTFOUND;
-- 輸出行的值
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || emp_record.emp_id);
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_record.emp_name);
DBMS_OUTPUT.PUT_LINE('Employee Salary: ' || emp_record.emp_salary);
DBMS_OUTPUT.PUT_LINE('-----------------------------');
END LOOP;
-- 关闭游标
CLOSE emp_cursor;
END;
/
上述示例中,首先定义了一个游标变量类型emp_record_type,该类型包含了一个表的行的结构(emp_id、emp_name和emp_salary)。然后定义了一个游标变量emp_cursor,类型为SYS_REFCURSOR。接著,使用OPEN语句打开游标,并使用SELECT语句检索需要处理的數據。在循环中,使用FETCH语句读取游标的下一行數據,并将其賦值给emp_record变量。然后,可以通過emp_record变量获取行的各個列的值,并对其进行相應的处理。最后,使用CLOSE语句关闭游标。
原文地址: https://www.cveoy.top/t/topic/qDuj 著作权归作者所有。请勿转载和采集!