【发布时间】:2018-04-01 14:45:35
【问题描述】:
我创建了一个 PL/SQL 函数,其中我在 SQL 查询中有一个 case 表达式。这工作正常,但是当我添加另一个 when 条件时,它不会编译。就算我用when ... and 2 > 1,这个也不编译。
在下面的代码中,注释部分没有正常工作。
我想要的是在我的when 子句中再添加一个检查。请指教。
create or replace function FUNCTION_NAME (date1 in varchar2,value1 in varchar2)
RETURN date
IS
date2 date;
BEGIN
SELECT D DATE2
INTO DATE2 FROM (SELECT CASE (SELECT TO_DATE(MAX(G.DATE3),'DD-MON-YYYY')
FROM TABLE1 G,
TABLE2 N
WHERE G.DATE3=N.DATE3)
WHEN LAST_DAY(TO_DATE(DATE1,'DD-MON-YYYY'))
/* AND MONTHS_BETWEEN (LAST_DAY(TO_DATE(SYSDATE)),
LAST_DAY(TO_DATE(TO_CHAR(DATE1),'DD-MON-YYYY'))) */
THEN LAST_DAY(TO_DATE(DATE1,'DD-MON-YYYY'))
ELSE
TO_DATE('31-DEC-99','DD-MON-YYYY')
END D
FROM DUAL);
RETURN DATE2;
END;
【问题讨论】:
-
您的键盘似乎有问题,您的大写锁定或 shift 键似乎卡住了。或者只是请停止对我们大喊大叫。
-
当然,兄弟,请尝试帮助解决编程问题:)
-
请注意网站为您的帖子添加的标签;通常默认值是相当随机的。我只是删除了对sql developer和plsql developer的引用,与您的问题无关。
-
嗨@vaibhavsaini,欢迎来到SO。礼貌地提问是获得更多帮助的好方法。您可以编辑您的问题以去掉所有大写字母。
-
关于术语的更多说明:确实存在 CASE statements,类似于
if... then...并且在 CASE statement 中您可以进行 SQL 查询等.这不是您的代码中的内容。在您的代码中,您有一个 SQL 查询,其中有一个 CASE 表达式。