Oracle 表单游标问题
Oracle forms cursor issue
我正在使用 Oracle Forms 并在编写游标时遇到问题。我的光标是
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 或其他东西。以前的(非常旧的)Forms 版本的 PL/SQL 引擎并没有完全遵循数据库的 PL/SQL 引擎,所以并不是所有在数据库中工作的东西在 Forms 中也工作。
因此,我建议您尝试使用旧的 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);
我正在使用 Oracle Forms 并在编写游标时遇到问题。我的光标是
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 或其他东西。以前的(非常旧的)Forms 版本的 PL/SQL 引擎并没有完全遵循数据库的 PL/SQL 引擎,所以并不是所有在数据库中工作的东西在 Forms 中也工作。
因此,我建议您尝试使用旧的 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);