There is no need to break out of the loop when an item is not found
.
FOR record IN ( select-query ) LOOP statement(s) END LOOP
is a cursor FOR LOOP in Oracle terminology, here is documentation: http://docs.oracle.com/cd/E18283_01/appdev.112/e17126/cursor_for_loop_statement.htm
The cursor for loop first executes the query, then for each record returned by the query, it executes the statements between LOOP...END LOOP.
When the query renturn no rows, then the loop code is not executed at all.
If we need to detect whether the query in the cursor for loop returns rows some rows or not, then the easiest way is to declare a boolean variable and assign a value to in wihin the LOOP..END LOOP block:
DECLARE
rows_found BOOLEAN := false;
BEGIN
FOR record IN ( select-query )
LOOP
rows_found := true;
... do something else ....
END LOOP:
IF NOT rows_found THEN
DBMS_OUTPUT.PUT_LINE('Item not found!');
END IF;
END;