【发布时间】:2021-08-14 18:59:08
【问题描述】:
我正在 Oracle Apex 中使用以下代码创建一个过程 创建或替换过程 weekely_report
(W_start IN weekely_report.StartDate%TYPE, W_end IN
weekely_report.EndDate%TYPE)
IS
BEGIN
UPDATE weekely_report
SET commission_amount = Sales_Amount*Com_Rate
where (StartDate-EndDate) = (w_start- W_end);
SELECT concat('New Commission amount of',ID,' is
',commission_amount,' dollars,
is equal to',commission_amount,'% of the total sale amount of ',Sales_Amount,' dollars.')
COMMIT;
END;
但是当我执行这个时,它会给出以下错误
编译失败,第 8 行 (13:53:12) PL/SQL: ORA-00909: 无效编号 参数编译失败,第 8 行 (13:53:12) PL/SQL: SQL 语句 忽略
但是参数的数量已经完成了,我检查了两次。
【问题讨论】:
-
您的选择语句无效。在 Mysql 中是允许的。我认为有问题。
-
@AnkitBajpai 我认为 select 语句没有问题
-
在 Oracle 中,没有双表就无法运行任何选择。
-
@RamiFar - 确实如此;除了
concat()调用有太多参数,你没有from子句(也没有 into 子句)。 -
除了 Oracle 中缺少的 FROM 子句之外,concat function 需要 正好 2 个参数,你的有 8 个。你可以嵌套它们,所以你有 concat(concat(cancat (...)))))) 或转换为concatenation operator (||)。 智慧之语: 不要与它每次都获胜的编译器争论。你的工作是找出问题所在,而不是声明编译器不正确。
标签: sql oracle stored-procedures plsql oracle-apex