PLSQL表单插入错误,有人能帮我吗?我不知道

PLSQL表单插入错误,有人能帮我吗?我不知道,plsql,oracle-apex,plsqldeveloper,Plsql,Oracle Apex,Plsqldeveloper,我有这段代码,我想添加一些插入值,求和并插入到特定列中。但我在一个错误之后又犯了一个错误。我想这是最后一个,但我不知道。有人帮我吗?添加了包含更多信息的屏幕截图 我的代码: DECLARE BEGIN INSERT INTO thuiswerk_declaratie (MNR, WNR, UREN_GEWERKT, TOTAAL_BEDRAG) VALUES (:P8_MNR,

我有这段代码,我想添加一些插入值,求和并插入到特定列中。但我在一个错误之后又犯了一个错误。我想这是最后一个,但我不知道。有人帮我吗?添加了包含更多信息的屏幕截图

我的代码:

DECLARE 
BEGIN   
INSERT INTO thuiswerk_declaratie    (MNR, WNR, UREN_GEWERKT, TOTAAL_BEDRAG)
                
VALUES                  (:P8_MNR, 
                         :P8_WNR, 
                         :P8_TOTAAL_AANTAL_UREN (:P8_MAANDAG_UREN +
                                              :P8_DINSDAG_UREN +
                                              :P8_WOENSDAG_UREN +
                                              :P8_DONDERDAG_UREN + 
                                              :P8_VRIJDAG_UREN), 
                         :P8_TOTAAL_BEDRAG (:P8_TOTAAL_AANTAL_UREN * 0.2)
                    );
END;

什么是“:P8_TOTAAL_AANTAL_UREN”和“:P8_TOTAAL_BEDRAG”?它们是apex中的绑定变量,因此它们包含一个字符串(不是函数名)。然而,查看您的代码,您似乎试图在绑定变量中引用函数,这将导致您看到的错误。很可能这只是一个语法错误,您可以尝试一下:

DECLARE 
BEGIN   
INSERT INTO thuiswerk_declaratie    (MNR, WNR, UREN_GEWERKT, TOTAAL_BEDRAG)
                
VALUES                  (:P8_MNR, 
                         :P8_WNR, 
                         :P8_MAANDAG_UREN + :P8_DINSDAG_UREN + :P8_WOENSDAG_UREN + :P8_DONDERDAG_UREN + :P8_VRIJDAG_UREN, 
                         :P8_TOTAAL_AANTAL_UREN * 0.2
                    );
END;
如果您真的想要一个函数,那么您可以执行以下操作之一:注意,这些是更复杂的解决方案

备选案文1:

你用的是apex。处理此问题的最佳实践是创建一个计算,该计算将计算列UREN_GEWERKT的页面项,并为列TOTAAL_BEDRAG创建另一个页面项。 您的pl/sql块将是:

DECLARE 
BEGIN   
INSERT INTO thuiswerk_declaratie    (MNR, WNR, UREN_GEWERKT, TOTAAL_BEDRAG)
                
VALUES                  (:P8_MNR, 
                         :P8_WNR, 
                         :P8_TOTAAL_AANTAL_UREN, 
                         :P8_TOTAAL_BEDRAG 
                    );
END;
在这种情况下,您还可以使用内置表单区域为您实现所有的功能

备选案文2:

假设您有(1)个pl/sql函数total_hours,该函数返回与thuiswerk_declaratie.UREN_GEWERKT相同数据类型的值,并接受5个参数(每周每天1个和(2个)另一个函数total_amount返回与thuiswerk_declaratie.TOTAAL_BEDRAG相同数据类型的值,并接受1个参数,您可以将pl/sql块编写为:

DECLARE 
BEGIN   
INSERT INTO thuiswerk_declaratie    (MNR, WNR, UREN_GEWERKT, TOTAAL_BEDRAG)
                
VALUES                  (:P8_MNR, 
                         :P8_WNR, 
                         total_hours (:P8_MAANDAG_UREN +
                                              :P8_DINSDAG_UREN +
                                              :P8_WOENSDAG_UREN +
                                              :P8_DONDERDAG_UREN + 
                                              :P8_VRIJDAG_UREN), 
                         total_amount (:P8_TOTAAL_AANTAL_UREN * 0.2)
                    );
END;

啊哈,我想我明白了。所以你说的是我需要两个函数,比如total_hours和total_amount。来计算:P8_TOTAAL_antal_UREN和:P8_TOTAAL_BEDRAG,然后返回它们?我的代码不工作吗,因为页面项是字符串,没有变量?抱歉,刚刚更新了我的解决方案-我想你只是有一个语法错误。为什么d如果你只是在添加值,你需要一个函数。如果它有帮助,我可以把我的第一个答案放回去嘿,np。不过这会很有帮助。如果是语法错误,我如何解决代码问题?或者是系统导致了错误?将原始答案放回去,与新答案合并。错误告诉你问题的确切原因。插入语句采用逗号分隔的值列表。其中一列可以是函数(显式函数,而不是绑定变量)。错误告诉您它需要函数。您传递了绑定变量。谢谢Koen,它真的很有帮助。我现在就可以使用它了!