Plsql 将小数作为SQL函数参数传递时出现数字或值错误

Plsql 将小数作为SQL函数参数传递时出现数字或值错误,plsql,oracle11g,Plsql,Oracle11g,在定义为以下内容的SQL函数中: CREATE OR REPLACE FUNCTION num_has_changed(new_val in NUMBER, old_val in NUMBER) RETURN BOOLEAN AS has_changed BOOLEAN; BEGIN has_changed := (old_val IS NULL AND new_val IS NOT NULL) OR (new_val <> old_val); RETURN h

在定义为以下内容的SQL函数中:

CREATE OR REPLACE FUNCTION num_has_changed(new_val in NUMBER, old_val in NUMBER)
RETURN BOOLEAN AS
    has_changed  BOOLEAN;
BEGIN
   has_changed := (old_val IS NULL AND new_val IS NOT NULL) OR (new_val <> old_val);
   RETURN has_changed;
END num_has_changed;
编辑:出于测试目的,我以最简单的方式调用它,但仍然得到错误:

BEGIN
    IF num_has_changed(10.1,5.1) then
        UPDATE 
           ACTIONS 
        SET 
          PAID = 1 
        WHERE 
          ID = 1
    END IF;
END;
值得注意的是,仅更新就可以正常工作


我有什么遗漏吗

我不确定,但您是否尝试将您的条件放入IF-ELSE逻辑并尝试?报告的错误针对哪一行?调用的上下文可能很有用。也许你实际上是在传递变量,而错误是当值被分配给这些变量时,例如?我用调用上下文编辑了这个问题。我无法用你的例子重现这个错误。尝试在函数中添加异常这一行可能会显示异常发生的位置dbms_output.put_line(dbms_UTILITY.format_error_backtrace);我也是;在我的11.2.0.4.0上运行良好。
BEGIN
    IF num_has_changed(10.1,5.1) then
        UPDATE 
           ACTIONS 
        SET 
          PAID = 1 
        WHERE 
          ID = 1
    END IF;
END;