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

Oracle PL/SQL计算员工在职时长函数编译报PLS-00103错误求助

核心报错原因

你遇到的PLS-00103错误90%以上的概率是代码中使用了全角符号/不可见特殊字符:

  • 错误指向第8行第21列的-符号,大概率你输入这个减号时不小心切换到了全角输入模式,输入了全角减号-,Oracle无法识别全角运算符,因此触发语法错误。
  • 少数情况是复制粘贴代码时带入了编辑器的隐藏特殊字符,同样会被Oracle判定为非法符号。

修复方案

  1. 手动重新编写所有运算符部分,确保所有减号、括号、斜杠都是半角英文符号,不要直接复制原有代码的对应片段
  2. 可以优化输出格式,给单位前加空格让结果更易读
  3. 编译函数时末尾加/触发完整编译

修正后的可运行代码

CREATE OR REPLACE FUNCTION oz_hire_duration(hiredate IN DATE)
    RETURN VARCHAR2
    IS workexperience VARCHAR2(30);

BEGIN
    workexperience := TRUNC(MONTHS_BETWEEN(SYSDATE, hiredate)/12) || ' years ' ||
    MOD(TRUNC(MONTHS_BETWEEN(SYSDATE, hiredate)), 12) || ' months '||
    TRUNC(SYSDATE - ADD_MONTHS(hiredate, TRUNC(MONTHS_BETWEEN(SYSDATE, hiredate)))) || ' days';

RETURN workexperience;
END;
/

测试验证

编译成功后执行以下语句即可验证效果:

SELECT oz_hire_duration(DATE '2020-01-15') AS work_duration FROM DUAL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:24:03