Sql 有条件地引用Oracle APEX中的复选框值 案例 时间:P6_TASK3_DEP='task2' 和:P6_T3_开始日期
我这里有一个语句试图有条件地引用复选框中的值(任务1,任务2)。每次我都会看到else语句,但我似乎不知道如何正确引用复选框中的值。因为在Sql 有条件地引用Oracle APEX中的复选框值 案例 时间:P6_TASK3_DEP='task2' 和:P6_T3_开始日期,sql,oracle,oracle-apex,Sql,Oracle,Oracle Apex,我这里有一个语句试图有条件地引用复选框中的值(任务1,任务2)。每次我都会看到else语句,但我似乎不知道如何正确引用复选框中的值。因为在CASE..WHEN语句中需要一个布尔表达式 这部分 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 = 'Tas
CASE..WHEN
语句中需要一个布尔表达式
这部分
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
当:P6_TASK3_DEP='task2'和:P6_T3_STARTDATE<:P6_T2_DUEDATE时
:P6\u T3\u开始日期=:P6\u T2\u结束日期
违反此规则的是赋值,而不是布尔表达式。这可能会转化为
WHEN :P6_TASK3_DEP = 'Task 2' AND :P6_T3_STARTDATE < :P6_T2_DUEDATE THEN
:P6_T3_STARTDATE = :P6_T2_DUEDATE
当:P6_TASK3_DEP='task2'和:P6_T3_STARTDATE<:P6_T2_DUEDATE时
:P6_T2_截止日期
相反。在不知道会话中页面项目的实际值的情况下,这只是猜测,但我想尝试一下:
WHEN :P6_TASK3_DEP = 'Task 2' AND :P6_T3_STARTDATE < :P6_T2_DUEDATE THEN
:P6_T2_DUEDATE
案例
时间:P6_TASK3_DEP='task2'
截止日期(:P6_T3_STARTDATE,'DD-MON-YYYY')<截止日期(:P6_T2_DUEDATE,'DD-MON-YYYY'))
然后
“布尔_在这里”
时间:P6_TASK3_DEP='Task 1'
截止日期(:P6\u T3\u STARTDATE,'DD-MON-YYYY')<截止日期(:P6\u T1\u DUEDATE,'DD-MON-YYYY'))
然后
:P6\u T1\u截止日期
时间:P6_TASK3_DEP='Task 1'
和:P6_TASK3_DEP='task2'
截止日期(:P6\u T2\u DUEDATE,'DD-MON-YYYY')>截止日期(:P6\u T1\u DUEDATE,'DD-MON-YYYY'))
然后
:P6_T2_截止日期
时间:P6_TASK3_DEP='Task 1'
和:P6_TASK3_DEP='task2'
截止日期(:P6\u T2\u DUEDATE,'DD-MON-YYYY')<截止日期(:P6\u T1\u DUEDATE,'DD-MON-YYYY'))
然后
:P6\u T1\u截止日期
其他的
“不工作”:P6_T3_开始日期
结束
apex中的所有页面项在pl/sql中都被视为字符串,因此如果要进行日期比较,必须告诉db您是在比较日期,而不是字符串。你可以做一个约会。我假设您的日期格式掩码为“DD-MON-YYYY”,但如果不是,您应该将其更改为您自己的日期格式掩码
正如@BarbarosÖzhan指出的,第一个
THEN
子句包含一个运算符,因此我将其替换为“boolean_here”。会话中每个页面项的值是什么?我们应该看到完整的语句。这是在SQL语句中还是在PL/SQL代码块中,它的周长是多少@游戏鸡20。我的意思是,你在最后给哪个参数赋值。
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