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

PLS-00382表达式类型错误:PL/SQL函数重载调用报错咨询

错误原因
  • 重载函数匹配逻辑问题:PL/SQL 解析重载调用时,优先匹配和实参类型完全一致的函数签名。你调用时传入的'14-07-2017'是VARCHAR2类型的字符串字面量,不是DATE类型,因此会自动匹配到入参为VARCHAR2、返回值为NUMBER的print_it重载函数。
  • 赋值类型不兼容:你声明的接收变量sample_date是DATE类型,匹配到的重载函数返回的是NUMBER类型,二者无法直接隐式转换,因此抛出PLS-00382: expression is of wrong type报错。
修复方案

方案1:显式转换入参为日期类型(最推荐)

将字符串字面量用to_date显式转换为DATE类型,让解析逻辑匹配到对应重载:

sample_date := over_load.print_it(to_date('14-07-2017','dd-mm-yyyy'));

该方案可以避免会话NLS_DATE_FORMAT参数差异导致的隐式转换报错问题。

方案2:调用时指定参数名强制匹配

调用时显式指定参数名,强制匹配对应重载函数,Oracle会自动按会话默认日期格式将字符串转换为DATE类型:

sample_date := over_load.print_it(v_date => '14-07-2017');

注:该方案依赖会话日期格式配置,存在不稳定风险,不建议生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:51:10