動態游標是一種可以在運行時根據條件選擇不同查詢結果的游標。在Oracle中,可以使用PL/SQL語言來創建和使用動態游標。
下面是一個使用動態游標的示例代碼:
DECLARE
TYPE emp_curtype IS REF CURSOR;
emp_cursor emp_curtype;
emp_id employees.employee_id%TYPE;
emp_name employees.last_name%TYPE;
BEGIN
-- 動態游標查詢
OPEN emp_cursor FOR 'SELECT employee_id, last_name FROM employees WHERE department_id = :dept_id' USING 50;
-- 循環遍歷結果
LOOP
FETCH emp_cursor INTO emp_id, emp_name;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(emp_id || ' ' || emp_name);
END LOOP;
-- 關閉游標
CLOSE emp_cursor;
END;
在上面的示例中,先定義了一個類型為REF CURSOR的變量emp_cursor,表示一個引用游標。然后使用OPEN語句將動態查詢結果賦值給emp_cursor,其中使用USING子句來傳入參數值。接下來使用FETCH語句從游標中獲取查詢結果,并根據需要進行處理。最后使用CLOSE語句關閉游標。
需要注意的是,在使用動態游標時,需要確保查詢語句是正確且安全的,避免SQL注入等安全問題。可以使用綁定變量(如上面的:dept_id)或者參數化查詢來提高查詢的安全性。