This example illustrates how you can create and use dynamic cursor in Oracle PL/SQL. The example is pretty simple, but I hope you can get the idea and apply it to more complicated cases.
DECLARE
t_cursor IS REF CURSOR;
my_cursor t_cursor;
v_customer RECORD (
customer_id NUMBER(18),
amount NUMBER(22, 2)
);
BEGIN
OPEN my_cursor FOR SELECT customer_id,
amount
FROM monthly_sales;
LOOP
FETCH my_cursor INTO v_customer;
EXIT WHEN my_cursor%NOTFOUND;
dbms_output.put_line(v_customer.amount);
END LOOP;
END;