匿名程序的 PLS-00103 错误

Posted

技术标签:

【中文标题】匿名程序的 PLS-00103 错误【英文标题】:PLS-00103 error with anonymous procedure 【发布时间】:2013-08-14 08:51:45 【问题描述】:

我遇到了一个错误

PLS-00103:在期待其中之一时遇到符号“文件结尾” 以下内容:[...]

运行匿名过程时(使用 Oracle):

BEGIN

DECLARE
  seq number(12);
  pk number(12);

BEGIN
  loop
      select mod_sdemol.nextval into seq from dual;
      select idn_demol into pk from demol where demol.idn_demol=seq;
      exit when pk is null;
  end loop;

INSERT INTO "T_MOD"."DEMOL" (IDN_DEMOL, COD_MOL, PATH, IND_BLOK) VALUES (seq, '13000501', 'V', 'S');

END;

我想要做的是遍历一个序列以防止与现有数据发生冲突。 根据this question 中的答案,PL/SQL 过程应该对选定的数据执行某些操作,但我所有的 SELECT 都有 INTO。

我做错了什么或者我错过了什么?

【问题讨论】:

为什么在declare之前需要begin?而变量pk在哪里使用,如果不使用为什么需要循环? @Polppan 我认为这个循环的目的是确保序列生成的数字没有被使用。 【参考方案1】:

您不需要第一个 BEGIN。每个BEGIN 关键字必须与END 关键字匹配。

【讨论】:

以上是关于匿名程序的 PLS-00103 错误的主要内容,如果未能解决你的问题,请参考以下文章

有序列错误的程序 - PLS-00103 发生需要指导

程序错误 - PLS-00103 遇到符号“>”

oracle程序错误PLS-00103遇到符号“END”[关闭]

PL/SQL 过程、游标、PLS- 00103 错误

PLS--00103 pl/sql 中的错误

PLS-00103 在 CASE 中遇到符号“”错误 [关闭]