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

PL/SQL存储过程触发ORA-06550与PLS-00103错误,求排查解决方法

解决PL/SQL中的ORA-06550与PLS-00103错误

错误原因

你遇到的报错是因为存储过程的参数名avg是Oracle的保留关键字(它是聚合函数AVG()的名称),PL/SQL语法不允许将关键字直接用作标识符,解析器处理到该参数时无法正确识别,因此抛出"遇到符号')'"的错误。

修正方案

将参数名avg替换为非关键字的合法名称,比如avg_length,同时同步修改存储过程内部和调用块中的对应引用:

修正后的存储过程代码

create or replace PROCEDURE Get_StarInfo(
    Stars in out starsin.starname%type, 
    cnt out integer, 
    avg_length out float
)
is
begin
    select starname, count(title), avg(length) into Stars, cnt, avg_length 
    from starsin, movie
    where movietitle=title
    and movieyear=year
    and starname=Stars
    group by starname;
exception
    when others then 
        cnt := -1;
        avg_length := -1;
end;

修正后的调用匿名块代码

declare 
    Stars starsin.starname%type := 'harrison ford';
    cnt integer:=3;
    avg_length float:=3.1;
begin
    get_starinfo(Stars,cnt,avg_length);
end;

补充说明

如果非要使用类似关键字的名称,可以用双引号包裹(比如"avg"),但这种方式会增加代码复杂度,不符合常规编码规范,不推荐使用。

内容的提问来源于stack exchange,提问作者대훈조

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:01:17