甲骨文表单游标问题



我正在使用Oracle表单,但在编写游标时遇到问题。我的光标是

CURSOR ss
IS
SELECT pjno, bdate, PROJECT
FROM billcrown
LEFT JOIN bank_details ON billcrown.pjno = bank_details.pjno
WHERE billcrown.bdate > '01-Jul-2017'
GROUP BY billcrown.pjno
HAVING SUM (billcrown.PAMT) <> NVL (SUM (bank_details.AMOUNT), 0);
s   ss%ROWTYPE;

它在固定左连接时显示错误。 错误是(在预期以下情况之一时遇到符号"JOIN"。 它在SQL提示符下工作正常。请指教。

它是哪个表单版本?如果它在LEFT JOIN上抱怨,那可能是 6i 或其他什么。以前(非常旧的(表单版本的PL/SQL引擎并不完全遵循数据库的PL/SQL引擎,因此并非所有在数据库中工作的东西都可以在表单中工作。

因此,我建议您尝试使用旧的 Oracle 外部连接运算符 (+(。

此外,如果列BDATE数据类型为DATE,则应针对它使用DATE值,而不是字符串。'01-Jul-2017'是一个字符串。DATE '2017-07-01'是日期(文字(。

最后,说你的代码在SQL*Plus中工作正常 - 不,它不是。GROUP BY仅包含 c.pjno 列,因此bdate, PROJECT也应包含在其中(或者您应该重写该查询(。

像这样:

CURSOR ss
IS
SELECT c.pjno
-- , bdate, PROJECT                 --> removed because of the GROUP BY clause
FROM billcrown c, bank_details d
WHERE c.pjno = d.pjno (+)            --> this
and c.bdate > date '2017-07-01'      --> use dates, not strings!
GROUP BY c.pjno
HAVING SUM (c.PAMT) <> NVL (SUM (d.AMOUNT), 0); 

最新更新