2017-04-05 22 views
-4
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; 
/

的錯誤是下一:PL/SQL編譯錯誤

39/5 PLS-00103:出現符號 「;」期待的 的 一個時,以下幾點: 如果

+0

你已經縮進了你的代碼,這很好;但是這並不能幫助你發現缺失的'END IF;'? –

+0

不要編輯問題以消除您遇到的問題 - 它會使現有答案無效。如果您有新問題,請提出新問題。但是Aleksej的回答已經搶先了你現在正在獲得的PLS-00363 - 看看第三個要點。 –

+0

我找到了缺失的[END IF],但現在給我一個錯誤。不過,我可以通過莊主,中介,市長和反過來解決變量n1,n2,n3。 –

回答

1

三個問題:

  • 你缺少一個END IF
  • medio是從未宣佈過;也許你的意思是mediano
  • 如果你想爲你的輸入參數賦值,他們需要是IN OUT

提示:CASE可能是更可讀的方式來實現相同的邏輯。

+0

非常感謝,但現在我有另一個問題。 –

+0

「另一個問題」是什麼意思?通過我建議的編輯,程序應該編譯。問題是什麼? – Aleksej

+0

別擔心,錯誤在您的幫助下解決 –