G-4385: Never use a cursor for loop to check whether a cursor returns data.
Reason
You might process more data than required, which leads to bad performance.
Example (bad)
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16 | declare
   l_employee_found boolean := false;
   cursor c_employees is
      select employee_id,last_name
        from employees;
begin
   <<check_employees>>
   for r_employee in c_employees
   loop
      l_employee_found := true;
   end loop check_employees;
   if l_employee_found then
      null; -- some processing;
   end if;
end;
/
 | 
Example (good)
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16 | declare
   l_employee_found boolean := false;
   cursor c_employees is
      select employee_id,last_name
        from employees;
   r_employee       c_employees%rowtype;
begin
   open c_employees;
   fetch c_employees into r_employee;
   l_employee_found := c_employees%found;
   close c_employees;
   if l_employee_found then
      null; -- some processing;
   end if;
end;
/
 |