当sysdate正确时,如何在表中插入一个值。这是我的代码,但stat字段为空
begin
for idx in 1 .. apex_application.g_f01.count
loop
if apex_application.g_f01(idx) is not null then
update outgoing
set STAT ='CONFIRM'
WHERE FILENUMBER = APEX_APPLICATION.G_F01(IDX)
AND DEPARTMENT = apex_application.g_f03(idx)
and OUTGOINGDATE= sysdate
;
end if;
end loop;
end;
答案 0 :(得分:1)
如果您验证apex_application.g_f0x
是正确的(即表示您认为正确的列-如果不正确,请在浏览器中使用 inspect元素),那么最可疑的情况是:< / p>
and OUTGOINGDATE = sysdate
SYSDATE
是一个返回日期和时间的函数,例如
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
29.01.2019 22:02:32
SQL>
我怀疑OUTGOINGDATE
列是否确切地包含当前日期/时间值。一种可能会解决此问题的方法是截断一个或两个值,例如
and OUTGOINGDATE = trunc(sysdate)
或
and trunc(OUTGOINGDATE) = trunc(sysdate)
由于TRUNC
函数删除了时间分量,因此您只比较日期。注意,第二个选项禁止在OUTGOINGDATE
列上使用索引(如果存在);如果表包含不那么多的行,则不会造成问题,但是如果表很大,则可能会(可能会)出现问题。不过,有一种解决方法-例如,您可以使用
and outgoingdate >= trunc(sysdate)
and outgoingdate < trunc(sysdate + 1)
如果不是这种情况,请检查OUTGOINGDATE
列的值并采取相应措施。如果不确定该怎么做,请提供更多信息。