【问题标题】:PLS00103: encountered the symbol "END"PLS 00103:遇到符号“END”
【发布时间】:2017-06-10 17:38:26
【问题描述】:

这是给我 PLS00130 的程序:遇到符号“END”错误。哪里有问题??我错过了什么吗?

CREATE OR REPLACE PROCEDURE GETHEATDATA(HEATNO NUMBER)
IS
BEGIN
  FOR program IN (
    select program_id from rml_program where heat_id=HEATNO
    )
  LOOP
  select
  program.program_id,
    program.job_id,
    program.grade,
    count(t.semiproduct_cnt),
    max(t.charging_date),
    min(t.charging_date),
    max(t.reheating_date),
    min(t.reheating_date),
    count(t.rejecting_date),
    count(t.rolling_date),
    count(t.loss_date)
    from
    rml_semiproduct t
    where
    t.program_id = program.program_id;
  END LOOP;
  END;
  END GETHEATDATA;

【问题讨论】:

  • 去掉结尾;?
  • 要么删除倒数第二个 END 或最后一个 END GETHEATDATA
  • 我试过了,但它给了我错误——PROCEDURE STM.GETHEATDATA 的编译错误错误:PLS-00302:必须声明组件“GRADE”行:11 文本:program.grade,错误:PL/ SQL:ORA-00904:“PROGRAM”。“GRADE”:无效标识符行:11 文本:program.grade,错误:PL/SQL:SQL 语句被忽略行:8 文本:select
  • @user3004692 正如 RLOG 在答案中指出的那样,您需要加入具有等级列的表,因为除了删除倒数第二个 END 或最后一个之外,程序不知道等级列结束 GETHEATDATA。

标签: sql oracle procedure


【解决方案1】:

2 件事。首先,删除END GETHEATDATA,其次,您忘记加入程序表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多