CASE
WHEN :P6_TASK3_DEP = 'Task 2'
AND :P6_T3_STARTDATE < :P6_T2_DUEDATE
THEN
:P6_T3_STARTDATE = :P6_T2_DUEDATE
WHEN :P6_TASK3_DEP = 'Task 1'
AND :P6_T3_STARTDATE < :P6_T1_DUEDATE
THEN
:P6_T1_DUEDATE
WHEN :P6_TASK3_DEP = 'Task 1'
AND :P6_TASK3_DEP = 'Task 2'
AND :P6_T2_DUEDATE > :P6_T1_DUEDATE
THEN
:P6_T2_DUEDATE
WHEN :P6_TASK3_DEP = 'Task 1'
AND :P6_TASK3_DEP = 'Task 2'
AND :P6_T2_DUEDATE < :P6_T1_DUEDATE
THEN
:P6_T1_DUEDATE
ELSE
'Not Working ' || :P6_T3_STARTDATE
END我这里有一条语句,试图有条件地引用复选框(Task 1,Task 2)中的值。每次我都会用到the语句,而且我似乎不知道如何正确引用复选框中的值。
发布于 2020-09-08 13:51:03
在不知道会话中页面项的实际值的情况下,这是猜测,但我想尝试一下:
CASE
WHEN :P6_TASK3_DEP = 'Task 2'
AND TO_DATE(:P6_T3_STARTDATE,'DD-MON-YYYY') < TO_DATE(:P6_T2_DUEDATE ,'DD-MON-YYYY')
THEN
'boolean_here'
WHEN :P6_TASK3_DEP = 'Task 1'
AND TO_DATE(:P6_T3_STARTDATE,'DD-MON-YYYY') < TO_DATE(:P6_T1_DUEDATE,'DD-MON-YYYY')
THEN
:P6_T1_DUEDATE
WHEN :P6_TASK3_DEP = 'Task 1'
AND :P6_TASK3_DEP = 'Task 2'
AND TO_DATE(:P6_T2_DUEDATE,'DD-MON-YYYY') > TO_DATE(:P6_T1_DUEDATE,'DD-MON-YYYY')
THEN
:P6_T2_DUEDATE
WHEN :P6_TASK3_DEP = 'Task 1'
AND :P6_TASK3_DEP = 'Task 2'
AND TO_DATE(:P6_T2_DUEDATE,'DD-MON-YYYY') < TO_DATE(:P6_T1_DUEDATE,'DD-MON-YYYY')
THEN
:P6_T1_DUEDATE
ELSE
'Not Working ' || :P6_T3_STARTDATE
END顶点中的所有页面项都被认为是pl/sql中的字符串,因此,如果要进行日期比较,就必须告诉db您正在比较日期,而不是字符串。你可以通过做一个TO_DATE来做到这一点。我以为您的日期格式掩码是‘DD-MON’,但如果不是,您应该将其更改为您自己的日期格式掩码。
第一个THEN子句包含一个操作符,正如@Barbaros指出的那样,因此我将其替换为‘boolean’。
发布于 2020-09-08 13:38:15
因为您需要CASE..WHEN语句中的布尔表达式。
本部分
WHEN :P6_TASK3_DEP = 'Task 2' AND :P6_T3_STARTDATE < :P6_T2_DUEDATE THEN
:P6_T3_STARTDATE = :P6_T2_DUEDATE它违反了此规则,它是一个辅助,而不是一个布尔表达式。可能被转换成
WHEN :P6_TASK3_DEP = 'Task 2' AND :P6_T3_STARTDATE < :P6_T2_DUEDATE THEN
:P6_T2_DUEDATE而不是。
https://stackoverflow.com/questions/63794727
复制相似问题