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

PLS-00103编译错误咨询:遇LC_SQLERRM,预期language相关项

编译错误PLS-00103排查与解决

错误原因

你的代码存在两个核心问题:

  1. 包结构混淆:PL/SQL包分为包规范(PACKAGE)和包体(PACKAGE BODY),你重复使用CREATE OR REPLACE PACKAGE定义包体,编译器无法识别包体内的变量声明逻辑,导致遇到lc_sqlerrm变量时抛出语法错误。
  2. 冗余语法与客户端命令:代码中混入了SQL*Plus客户端命令(SET VERIFY OFF、WHENEVER SQLERROR...),这些命令不属于PL/SQL包定义的一部分,会干扰编译;同时存在多余的END XX_INS_DATA_ADI;语句,破坏了包体结构完整性。

解决方案

  1. 将第二个包定义语句从CREATE OR REPLACE PACKAGE改为CREATE OR REPLACE PACKAGE BODY,匹配包规范与包体的对应关系。
  2. 移除所有SQL*Plus客户端命令,确保代码仅包含纯PL/SQL包定义。
  3. 删除多余的END XX_INS_DATA_ADI;语句,保证包体语法结构正确。

修正后的完整代码

-- 包规范
CREATE OR REPLACE PACKAGE APPS.XX_PROC_ADI_test  AS
  PROCEDURE XX_INS_DATA_ADI (
    p_primary_uom_flag        VARCHAR2,
    p_list_line_type_code     VARCHAR2,
    p_price_break_type_code   VARCHAR2,
    p_arithmetic_operator     VARCHAR2,
    p_operand                 NUMBER,
    p_start_date_active       DATE,
    p_end_date_active         DATE,
    p_product_precedence      NUMBER
  );    
END XX_PROC_ADI_test;
/

-- 包体
CREATE OR REPLACE PACKAGE BODY APPS.XX_PROC_ADI_test  AS
  PROCEDURE XX_INS_DATA_ADI (
    p_primary_uom_flag        VARCHAR2,
    p_list_line_type_code     VARCHAR2,
    p_price_break_type_code   VARCHAR2,
    p_arithmetic_operator     VARCHAR2,
    p_operand                 NUMBER,
    p_start_date_active       DATE,
    p_end_date_active         DATE,
    p_product_precedence      NUMBER
  )IS
    lc_sqlerrm              VARCHAR2(2000);
    lc_error_msg            VARCHAR2 (2000);
     
    l_responsibility_id     NUMBER := apps.fnd_global.resp_id;
    l_resp_application_id   NUMBER := apps.fnd_global.resp_appl_id;
    l_org_id                NUMBER := apps.fnd_global.org_id;
    l_user_id               NUMBER := apps.fnd_global.user_id;
     
  BEGIN
    INSERT INTO QP_LIST_LINES(
      primary_uom_flag,
      list_line_type_code,
      price_break_type_code,
      arithmetic_operator,
      operand,
      start_date_active,
      end_date_active,
      product_precedence
    ) VALUES (
      p_primary_uom_flag,
      p_list_line_type_code,
      p_price_break_type_code,
      p_arithmetic_operator,
      p_operand,
      p_start_date_active,
      p_end_date_active,
      p_product_precedence
    );

    COMMIT;
  EXCEPTION WHEN OTHERS THEN
    lc_sqlerrm := SUBSTR(SQLERRM,1,1999);
    raise_application_error (-20001, 'OTHER_EXCEPTION - MSG | ' || lc_sqlerrm);
  END XX_INS_DATA_ADI;
END XX_PROC_ADI_test;
/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:50:26