以下是一個使用動態游標的示例,其中游標變量的類型為一個表的行的類型:

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語句關閉游標


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

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