You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将含TO_NUMBER与VALUE_ERROR异常的Oracle UDF转换为AWS RDS MariaDB

适配AWS RDS MariaDB的num_check函数

转换后的函数代码

CREATE OR REPLACE FUNCTION num_check(p_string VARCHAR)
RETURNS DECIMAL
DETERMINISTIC
BEGIN
    DECLARE v_new_num DECIMAL;
    -- 捕获字符转数字失败的异常,对应Oracle的VALUE_ERROR
    DECLARE CONTINUE HANDLER FOR SQLSTATE '22018'
        SET v_new_num = NULL;
    
    SET v_new_num = CAST(p_string AS DECIMAL);
    RETURN v_new_num;
END;

核心转换要点

  • 数据类型适配:Oracle的VARCHAR2替换为MariaDB标准的VARCHAR;NUMBER替换为DECIMAL(MariaDB兼容NUMBER别名,但DECIMAL是SQL标准类型)
  • 异常处理替换:Oracle的VALUE_ERROR对应MariaDB中SQL状态码22018(无效字符值转换),通过DECLARE CONTINUE HANDLER捕获异常并将结果设为NULL
  • 转换函数替代:用MariaDB的CAST()函数替代Oracle的TO_NUMBER(),功能完全匹配
  • 可选优化:添加DETERMINISTIC属性,告知数据库输入相同参数时返回相同结果,利于查询优化

内容的提问来源于stack exchange,提问作者Arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:25:53