Without defining a cursor explicitly we can simply substitute the subquery inside a FOR statement.
e.g. SET SERVEROUTPUT ON BEGIN FOR trip_record IN (SELECT bt_id_pk, bt_duration FROM business_trips) LOOP -- implicit open/fetch occurs IF trip_record.bt_duration = 1 THEN DBMS_OUTPUT_LINE ('trip Number ' || trip_record.bt_id_pk || ' is a one day trip'); END IF; END LOOP; -- implicit CLOSE occurs END; / Cursor with Parameters DECLARE v_hotel business_trips.bt_hotel_id%TYPE := 12; v_duration business_trips.bt_duration.%TYPE := 3; CURSOR trip_cursor(p_hotel NUMBER, p_duration VARCHAR2) IS SELECT ... --Then to open the cursor either OPEN trip_cursor (12, 3); --or using the variables: OPEN trip_cursor (v_hotel, v_duration);
--Alternatively open the cursor implicitly as part of
a Cursor FOR loop
pass the parameters like this...
BEGIN
FOR trip_record IN trip_cursor(12, 3) LOOP ...
Related:
PL/SQL looping commands
EXIT -
GOTO -