expiration_date.sf.sql

来自「OReilly Oracle PL SQL Programming第4版源代码」· SQL 代码 · 共 27 行

SQL
27
字号
CREATE OR REPLACE FUNCTION expiration_date (
    good_for_period_in IN INTERVAL YEAR TO MONTH
)
    RETURN TIMESTAMP
IS
   bad_month EXCEPTION;
   PRAGMA EXCEPTION_INIT (bad_month, -1839);

   todays_date TIMESTAMP;
   result_date TIMESTAMP;
BEGIN
   todays_date := TRUNC(SYSTIMESTAMP);
   LOOP
      BEGIN
         result_date := todays_date + good_for_period_in;
      EXCEPTION
         WHEN bad_month THEN
            todays_date := todays_date - INTERVAL '1' DAY;
         WHEN OTHERS THEN
            RAISE;
      END;

      EXIT WHEN result_date IS NOT NULL;
   END LOOP;
   RETURN result_date;
END;
/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?