以下是一个使用动态游标的示例,其中游标变量的类型为一个表的行的类型:

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_idemp_nameemp_salary)。然后定义了一个游标变量emp_cursor,类型为SYS_REFCURSOR。接著,使用OPEN语句打开游标,并使用SELECT语句检索需要处理的數據。在循环中,使用FETCH语句读取游标的下一行數據,并将其賦值给emp_record变量。然后,可以通過emp_record变量获取行的各個列的值,并对其进行相應的处理。最后,使用CLOSE语句关闭游标。


原文地址: https://www.cveoy.top/t/topic/qDuj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录