【发布时间】:2021-10-24 04:10:50
【问题描述】:
我在帽子下面的存储过程工作正常。 无论是谁,我都希望能够检查是否存在带有 YesterdayDate 的数据集,如果不存在,请将 YesterdayDate 替换为 TodayDate。
我正在尝试检查此计数 select count(1) from TableName where DATASET_DATE = YesterdayDate 是否为 0,但如果有的话,我找不到一种方法来将此检查添加到代码中,而无需修改或破坏其他所有内容。
存储过程:
CREATE OR REPLACE function DO_STUFF
(TodayDate date, YesterdayDate date)
return integer is status integer;
BEGIN
DECLARE
CURSOR c_stuff
IS
SELECT
<several_fields>
FROM
TableName TODAY
LEFT JOIN TableName YESTERDAY
ON TODAY.KEY1 = YESTERDAY.KEY1
WHERE TODAY.DATASET_DATE = TodayDate
AND YESTERDAY.DATASET_DATE = YesterdayDate
ORDER BY
TODAY.KEY1 ASC;
BEGIN
FOR r_lines IN c_stuff
LOOP
<do_some_stuff>
END LOOP;
END;
COMMIT;
STATUS := 0;
return status;
END
/
有人知道如何实现这一点吗?
-- 编辑澄清:
我确实需要使用这两个谓词。
在
【问题讨论】:
-
那么您的目标是在
where子句中使用两个谓词之一,而不是同时使用两者? -
我相信我没有正确解释。我确实需要使用这两个谓词。在
部分中,我主要进行计算并比较两个数据集并使用结果更新一些字段。我在这里要完成的是通过今天与今天的比较,避免结果数据不正确,来处理昨天进程没有运行并且没有昨天数据集的情况。
标签: sql oracle variables stored-procedures