我在Oracle上做了一些SQL,我发现了一些奇怪的东西
我有一个FOR
循环遍历日期列表(存储为VARCHAR2):
FOR current_date in (SELECT DISTINCT DATCRE as datcre
FROM EVE cdv
WHERE cdv.datcre BETWEEN p_datedeb AND p_datefin)
LOOP
[queries]
END LOOP;
我需要在以下查询的where子句中使用current_date
:
SELECT COUNT(cdv.numeve)
INTO nb
FROM EVE cdv
WHERE cdv.datcre = current_date.datcre;
此查询无效,我收到ORA-00933: SQL command not properly ended
现在,如果我声明一个curDate VARCHAR2(10)
变量,将current_date.datcre
存储在其中并在查询中使用它,它可以正常工作:
curDate := (current_date.datcre);
SELECT COUNT(cdv.numeve)
INTO nb
FROM EVE cdv
WHERE cdv.datcre = curDate;
我是否遗漏了某些内容,或者这只是Oracle的工作方式?