首页 > 解决方案 > 从显式光标中选择

问题描述

有没有办法从显式游标中进行选择,而不必使用带IF条件的循环来过滤游标?

换句话说,如果我有以下光标......

CURSOR cur_emp IS
  SELECT * FROM emp;

有没有办法做到以下几点?

DECLARE
  v_row cur_emp%ROWTYPE;
BEGIN
  SELECT * INTO v_row FROM cur_emp WHERE id_emp < 10;
  /* Do something */
END;

标签: oracleplsqloracle12c

解决方案


否,但改为更改光标

CURSOR cur_emp(iEmpid in emp.id_emp%TYPE) IS
  SELECT * FROM emp
   WHERE id_emp < iEmpid;

for rEmp in cur_emp(10) loop
  -- do something
end loop;

或者

跳过光标并将洞的东西放入 for 循环中,它同样有效。

for rEmp in (SELECT * FROM emp WHERE id_emp < 10) loop
  -- do something
end loop;

推荐阅读