2017-10-15 42 views
0

使用sql開發者。我是PLSQl的新手。我嘗試了很多已經提出的解決方案,還有一些還沒有提出建議。似乎我得到「結束」或「開始」PLS-00103錯誤。以下是代碼。預先感謝任何幫助 - 非常感謝。獲取錯誤(42,1):PLS-00103:在PlSQL代碼中遇到符號「END」。

CREATE OR REPLACE PROCEDURE PROCEDURE1 
(
     category_id in Messages.category_id%type, 
     messagetext in Messages.messagetext%type, 
     lastupdatedBy in Messages.lastupdatedBy%type, 
     message_id out Messages.message_id%type, 
     txtcomment out varchar2) 
as 
BEGIN 
    Declare uniquecategoryid number := 0; 
    uniquemsgid number := 0; 
    BEGIN 
     -- verify that category id is a valid category 
    SELECT Categories.category_id 
      INTO uniquecategoryid 
      FROM Categories 
      WHERE Categories.category_id = PROCEDURE1.category_id; 
    EXCEPTION  
    WHEN NO_DATA_FOUND THEN 
    uniquecategoryid := 0; 
    END; 

    BEGIN 
     SELECT message_id into uniquemsgid 
      FROM Messages 
      where Messages.messagetext = PROCEDURE1.messagetext 
      AND uniquecategoryid > 0; 
    EXCEPTION  
     WHEN NO_DATA_FOUND THEN 
     uniquecategoryid := 0; 
    END;  

    Begin 
     INSERT INTO Messages (CATEGORY_ID, messagetext, lastupdatedby, lastupdated, status) 
      VALUES (PROCEDURE1.category_id, PROCEDURE1.messagetext, 
        PROCEDURE1.lastupdatedBy, SYSDATE,'A') 
      returning Messages.message_id INTO PROCEDURE1.message_id; 
     COMMIT; 
     PROCEDURE1.txtcomment := 'SUCCESS'; 
    end; 
END;  
END PROCEDURE1; 
+1

**刪除第二行:**'END;' – L30n1d45

+0

使用文本編輯器 - 計算'BEGIN'語句,然後計算'END'語句,您會發現它(因爲您沒有' IF'或'CASE'等聲明)。 – g00dy

+0

順便說一句,你還會在'Declare'語句中得到一個錯誤,因爲名爲pl/sql的函數過程不使用它。他們的「聲明」部分就在相應單元的第一個「BEGIN」之上。 – g00dy

回答

1

刪除END;上述規定END PROCEDURE1 ;.該代碼通過END PROCEDURE1;理解過程塊的結束。結束;在這種情況下是無用的。

相關問題