Oracle错误:ORA-06592 Case Not Found问题解决办

作者:袖梨 2022-06-29

在Oracle 10g中,通过触发器在两个数据库之间传递数据,但是程序中总是抛出如下错误:

ORA-01438: value larger than specified precision allowed for this column

提示某一列精度不对,但是却没有提示出是那一列,经过仔细检查,始终没有发现问题原因,于是尝试直接在PL/SQL中执行一次插入命令,看看触发器是否正常工作,但是这次依然不成功,报错ORA-06592, 提示缺少CASE。

经过不断的搜索,终于在网上找到了解决办法,CASE语句中添加上ELSE语句即可。

CASE
    WHEN ...
    ELSE
        NULL;
END CASE;

修改触发器之后,从PLSQL中插入成功,又试了一下通过此程序插入,竟然也成功了!

简单case语句与搜索式case语句的异同

--相同点:两者都用于根据不同的条件,来执行与之对应的语句或完成特定的任务,甚至某些情况下可以互换替换。

--不同点:

--简单case语句提供一个selector选择器,且EXPRESSION的数据类型一定与selector的数据类型匹配,否则报错。

--搜索case语句没有selector选择器,且when子句之后得到的结果一定是一个布尔型值(NULL,TRUR,FALSE)

不知道之间有什么关联,对Oracle没什么研究,就此记录一下,以后遇到类似问题以便解决。

相关文章

精彩推荐