2017-09-15 149 views
0

我在Oracle APEX中編寫了一個PLSQL過程,但我不知道如何結束它,因爲我試過的每種方法都仍然抱怨。結束PLSQL過程

DECLARE 
PROCEDURE FzgZuordnen(Volt VARCHAR2) IS 
Variable Declarations 
* 
    BEGIN 
    * 
    END; 
FzgZuordnen END; 

我也曾嘗試

 * 
    END; 
END; 

但它似乎並不喜歡的任何方式我結束我的程序。我已經結束了程序中的所有內容。

感謝您的任何幫助。

+0

當我刪除聲明它抱怨找到過程並用聲明替換過程。 –

+0

供參考。所有塊都需要一個內部語句..所以你可以嘗試在開始和結束之間添加一個'NULL;' – ShoeLace

回答

0

據我所知,您不能將PL/SQL過程直接放在APEX頁面中。對於PL/SQL執行,有APEX進程。如果你要重新使用您在其他網頁代碼那麼無論是過程複製到每個網頁或使用數據庫程序(意思是直接把程序在數據庫中)


使用APEX過程: 創建頁面上的新進程並選擇「PL/SQL代碼」作爲類型。然後在APEX過程中輸入你的代碼。

Variable Declarations 
* 
BEGIN 
* 
END; 

進程只能在同一頁面內使用。如果你想在多個其他頁面上使用你的代碼,你必須將它們複製到這個頁面。


使用DB-過程: 如果你使用,你必須直接將它添加到Oracle數據庫一個數據庫程序。因此用您選擇的工具連接到數據庫。從上面執行你的代碼。要在APEX中調用該過程,請使用類似這樣的內容。

begin 
    PKG.FzgZuordnen(:APEX_PAGEITEM); 
end; 
2

可以聲明在PL/SQL塊的任何地方本地程序 - 包括APEX。語法是這樣的:

DECLARE 
    PROCEDURE FzgZuordnen(Volt VARCHAR2) IS 
    -- Variable Declarations 
    BEGIN 
    -- Procedure code 
    END FzgZuordnen; 
BEGIN 
    -- Block PL/SQL that calls the procedure 
END; 

例如:

DECLARE 
    PROCEDURE raise_error (error_text VARCHAR2) IS 
    BEGIN 
    raise_application_error (-20001, error_text); 
    END FzgZuordnen; 
BEGIN 
    if :p1_value < 0 then 
    raise_error ('Value cannot be negative'); 
    elsif :p1_value > 10 then 
    raise_error ('Value cannot exceed 10'); 
    end if; 
END; 

因爲程序是局部聲明它只能從那裏它被聲明的PL/SQL塊使用。如果您需要一個可以從您的應用程序或頁面中調用的程序,那麼它需要在數據庫中定義(最好在一個包中)。