我在包内部有一个复杂的存储过程。在这个SP内部,我需要查询一个表来获取所有与一列相关的数据,然后用它来检查“IF”语句中的其他条件。 下面是我在做什么:将整个列存储在存储过程中的变量中
--declare a variable to store the holidays
l_holidays MySchema. HolidayTable.DateColumn%TYPE
-- populate this variable
Select a.DateColumn into l_holidays
from MySchema. HolidayTable a;
-- using this variable inside an "IF" statement
IF (current_Date IN l_holidays)
THEN
-- do something
ELSE
-- do something
END IF;
我每次运行它,我得到以下错误
ORA-01422: exact fetch returns more than requested number of rows
我知道这是因为我想填充使用“进入整列“条款。但我不知道有任何其他的做法。
这听起来可怕像你正在试图做一些程序上按行对一些可以在一个sql语句中完成的事情进行逐行处理。 IF声明中发生了什么工作?如果您使用它来对表执行一些DML,那么逐行(又慢又慢)处理并不是实现这一点的最佳或最快的方式。 – Boneist