我一直在尝试使用带参数的游标查询雇员,但是我想检索所有数据而不向参数传递值,有什么想法吗?
DECLARE
cursor emp_cursor(v_dept_id number) IS
SELECT * FROM employees
WHERE department_id = v_dept_id;
BEGIN
FOR emp_record IN emp_cursor(60) LOOP
dbms_output.put_line(' id = ' || emp_record.employee_id);
END LOOP;
END;
2条答案
按热度按时间slsn1g291#
如果使用
-1
表示想要所有值,则可以用途:然后,对于样本数据:
输出:
型
fiddle
watbbzwu2#
你的代码没问题--只需要像下面这样修改where子句。它涵盖了传递v_dept_id的所有选项--如果它为Null或-1,你将得到所有记录--否则只会得到传递到游标的department:
通过值的结果:
| emp_cursor(空)或(-1)|emp_光标(10)|
| - ------|- ------|
| 编号= 7939|编号= 7939|
| 编号= 7369|编号= 7369|
| 编号= 7499|编号= 7782|
| 编号= 7521|编号= 7839|
| 编号= 7566|编号= 7902|
| 编号= 7654|编号= 7934|
| 编号= 7698||
| 编号= 7782||
| 编号= 7788||
| 编号= 7839||
| 编号= 7844||
| 编号= 7876||
| 编号= 7900||
| 编号= 7902||
| 编号= 7934||
注意:旧的emp表在这里-调整它到您的