PL/SQL 编译错误
Posted
技术标签:
【中文标题】PL/SQL 编译错误【英文标题】:PL/SQL compilations error 【发布时间】:2017-04-05 07:43:09 【问题描述】:CREATE OR REPLACE PROCEDURE Orden (n1 IN number, n2 IN number, n3 IN number) AS
menor number;
mediano number;
mayor number;
BEGIN
IF (n1<n2) THEN
IF (n1<n3) THEN
menor := n1;
IF (n2<n3) THEN
mediano := n2;
mayor := n3;
ELSE
mediano := n3;
mayor := n2;
END IF;
ELSE
menor := n3;
mediano :=n1;
mayor := n2;
END IF;
ELSE
IF (n1 < n3) THEN
menor := n2;
mediano := n1;
mayor := n3;
ELSE
mayor := n1;
IF(n2< n3) THEN
medio := n2;
menor := n3;
ELSE
medio := n3;
menor := n2;
END IF;
END IF;
n1 := menor;
n2 := medio;
n3 := mayor;
END;
/
错误是下一个:
39/5 PLS-00103:遇到符号“;”当期待其中之一 这 下列的: 如果
【问题讨论】:
你已经缩进了你的代码,这很好;但这并不能帮助您发现丢失的END IF;
?
不要编辑问题以消除您遇到的问题 - 它会使现有答案无效。如果您有新问题,请提出新问题。但是 Aleksej 的回答已经抢占了您现在得到的 PLS-00363 - 请看第三个要点。
我找到了丢失的 [END IF] ,但现在给我一个错误。但是,我可以通过 menor 、 mediano 、 mayor 来解决将变量 n1、n2、n3 翻转过来的问题,反之亦然。
【参考方案1】:
三个问题:
您缺少END IF
medio
从未被声明;也许你的意思是mediano
?
如果你想为你的输入参数赋值,它们需要是IN OUT
。
提示:CASE
可能是实现相同逻辑的更易读的方式。
【讨论】:
非常感谢,但现在我有另一个问题。 “另一个问题”是什么意思?通过我建议的编辑,程序应该可以编译。有什么问题?以上是关于PL/SQL 编译错误的主要内容,如果未能解决你的问题,请参考以下文章