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

Excel传入PL/SQL块执行报错ORA-06550 PLS-00103 遇到end-of-file符号

错误原因

ORA-06550搭配PLS-00103报错Encountered the symbol "end-of-file",本质是Oracle解析PL/SQL语句时,没有读到完整的闭合结构,输入内容提前结束,触发该报错。你场景下的常见诱因如下:

  • 语句本身语法不完整:你提供的示例中Insert query是占位符,如果实际执行时这部分没有替换为合法的INSERT语句、或者漏写末尾分号,会导致整个PL/SQL块结构不闭合,解析到末尾都找不到合法结束标记
  • Excel内容读取截断:从Excel单元格读取PL/SQL内容传入Java的过程中,换行符被过滤、或者只读取了单元格前半部分内容,导致begin、循环、end等后续结构没有完整传入数据库
  • 缺少块结束标记:Oracle的匿名PL/SQL块执行时,部分JDBC驱动要求块末尾添加/作为执行结束标记,缺失该标记会被驱动判定为语句未输入完成
  • 细节语法错误:比如end loop、end后面漏写分号,变量定义语法错误导致结构解析提前终止
排查解决步骤
  • 第一步先打印Java程序读取到的完整PL/SQL字符串,和Excel单元格内的原文逐段对比,确认没有内容截断、换行符丢失、特殊字符转义错误的问题
  • 检查PL/SQL语法完整性,确保所有语句末尾都加英文分号,嵌套结构完全闭合,示例语句调整为合法结构参考如下:
declare
type nt_type is table of number;
nt nt_type:= nt_type (8038036,8088810);
begin
for i in 1..nt.count
loop
    -- 替换为实际业务的INSERT语句,末尾必须加分号
    insert into your_table(col_name) values(nt(i));
end loop;
end;
/
  • 将打印得到的完整PL/SQL语句直接放到Oracle客户端(如PL/SQL Developer、Navicat)中执行,如果能正常运行说明语法无问题,问题出在Java程序的参数传递环节
  • 检查Java代码逻辑:确认JDBC设置PL/SQL参数时没有长度限制,没有字符串拼接错误,避免内容被截断
  • 如果直接执行语法正常、JDBC执行报错,可在PL/SQL块末尾主动添加结束符/,适配JDBC驱动的解析规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:45:04