【发布时间】:2025-12-29 21:15:11
【问题描述】:
我是 SQL 编程的新手。
我需要制定一个程序来比较日期。该过程中的唯一参数是用户在 Java 程序中输入的日期。我需要检查该参数(日期)是否在一年前。换句话说,我需要将它与 SYSDATE 减去一年进行比较。如果是这种情况,我必须“清除”所有与“时间表”相关的表(其中有 2 个)。
例如,假设用户键入 2013-04-13,我的程序必须将其与 SYSDATE - 1 年进行比较(在这种情况下,它将是 2014-12-03)。由于该值小于今天减去一年,因此必须清除表“MovieSchedule”和“ChannelSchedule”。如果输入的日期是 2014 年 12 月 16 日,因为它现在比 SYSDATE 减去一年多,该过程必须发回一个明确的错误,我将能够在 Java 程序中使用该错误。
现在,正如我所说,我对 PL/SQL 中的过程编程完全陌生,所以通过在 Internet 上查找教程可以得出以下结论:
CREATE OR REPLACE
PROCEDURE purge_schedule(purgeDate date) AS
DECLARE
currentDate := to_date(SYSDATE, 'YYYMMDD');
BEGIN
-- IF purgeDate < (currentDate - 1year)
-- delete content in "MovieSchedule" and "ChannelSchedule"
-- ELSE
-- return explicit error
END purge_schedule;
我什至不知道这是否是编写我想要的程序的正确方法。正如你所看到的,我的问题是如何在程序中实现我的条件,而不是它背后的逻辑。我责怪我缺乏对语言的练习。
如果您需要更多信息以帮助我,请告诉我是否需要更具体。感谢您的帮助,祝您有愉快的一天:)
【问题讨论】:
-
to_date(SYSDATE, 'YYYMMDD')毫无意义。它将sysdate(即DATE)转换为varchar,然后将varchar转换回原来的date。
标签: oracle date stored-procedures plsql