ORA-54002: only pure functions can be specified in a virtual column expression

文档解释

ORA-54002: only pure functions can be specified in a virtual column expression

Cause: Column expression contained a function whose evaluation is non-deterministic.

Action: Rewrite column expression to reference only pure functions.

ORA-54002: 虚拟列表达式中只能指定纯函数

错误说明

ORA-54002:当在创建表之前指定虚拟列时,Oracle返回ORA-54002错误。 该错误指示列表达式中仅包含纯函数,而不包括算子,变量或表达式。

常见案例

例如:在创建表之前,尝试为表中的列指定虚拟列表达式。对一列指定一个整体加法表达式,另一列指定一个减法表达式,第三列指定一个乘法表达式。

解决方法

用户只能用纯函数来定制虚拟列表达式,禁止使用任何 Perl 表达式,变量或算子。函数可能来自 Oracle 标准函数库或第三方函数库(如Java函数库)。 例如:

CREATE TABLE emp

(

empno number,

sum_salary number GENERATED ALWAYS AS ((salary + incentive_details)/2) VIRTUAL,

end_salary number GENERATED ALWAYS AS (((salary + incentive_details)/2)-(tax/2)) VIRTUAL

)

上面的声明不应报告此错误,因为它使用了仅是函数的表达式。

如果仍然报告以上错误,则可能存在一些与表达式的数据类型不匹配的问题。 在这种情况下,用户可以在虚拟字段表达式中使用转换函数来修正匹配问题。

你可能感兴趣的