PLS-00103:遇到符号“;”预期以下情况之一时:。 ( ) * @ % & - + /

Posted

技术标签:

【中文标题】PLS-00103:遇到符号“;”预期以下情况之一时:。 ( ) * @ % & - + /【英文标题】:PLS-00103: Encountered the symbol ";" when expecting one of the following: . ( ) * @ % & - + / 【发布时间】:2015-01-04 14:45:03 【问题描述】:

编译失败,第 10 行 (14:27:16) 与编译错误相关的行号与第一个 BEGIN 语句相关。这只会影响数据库触发器的编译。

at mod 余数 rem 与和或组相交减去 start union where connect ||多集 符号“;”被忽略了。**

create or replace trigger "PROMOS_T2"
  BEFORE insert or update on "PROMOS"    
  for each row    
DECLARE    
  ma_exp1 EXCEPTION;    
  ma_exp2 EXCEPTION;    
  ma_exp3 EXCEPTION;
  cap LOGTS.CAPACITE%TYPE;    
  nbr INTEGER;    
begin
  SELECT COUNT (*) INTO nbr FROM LOGTS  WHERE :NEW."IDLOG"=IDLOG;
  SELECT CAPACITE INTO cap FROM LOGTS WHERE :NEW."IDLOG"=IDLOG;
  if (exists(SELECT * FROM PROMOS WHERE :NEW."IDPROMO"=IDPROMO;) )THEN
    RAISE ma_exp1;
  elsif nbr=1 AND cap < :NEW."NBPLACES" THEN
    RAISE ma_exp2;
  else
    RAISE ma_exp3;
  end if;
EXCEPTION
  WHEN ma_exp1 THEN
    RAISE_APPLICATION_ERROR(-20004,'la promos dèja existe');
  WHEN ma_exp2 THEN
    RAISE_APPLICATION_ERROR(-20005,'PAS DE PLACE');
  WHEN ma_exp3 THEN
    RAISE_APPLICATION_ERROR(-20006,'IDLOG nexiste pas');
end;

【问题讨论】:

【参考方案1】:

查看错误信息,尤其是部件

编译失败,第 10 行

遇到符号“;”

这是第 10 行:

if (exists(SELECT * FROM PROMOS WHERE :NEW."IDPROMO"=IDPROMO;) )THEN

看到问题了吗?

您的编译错误是由该行中的分号引起的。删除它会有所帮助,但您的代码仍然无法编译,因为您无法在 SQL 之外的 PL/SQL 中调用 EXISTS。要解决这个问题,see the answers to this question。

【讨论】:

以上是关于PLS-00103:遇到符号“;”预期以下情况之一时:。 ( ) * @ % & - + /的主要内容,如果未能解决你的问题,请参考以下文章

PLS00103:在预期以下情况之一时遇到符号“I”

PLS-00103:在预期以下情况之一时遇到符号“ON”

PLS-00103:遇到符号“;”预期以下情况之一时:

为啥我会收到此错误? PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

PLS-00103:在预期以下情况之一时遇到符号“END”

PLS-00103:遇到符号“;”预期以下情况之一时:。 ( ) * @ % & - + /