2009-11-05 277 views
1

我想運行存儲過程腳本,但我面臨的問題是,當我一次運行多個存儲過程時,所有過程都會被編譯,但它不會單獨創建所有這些過程,它會編譯它作爲一個單一的程序。 任何人都可以幫我解決這個問題。Oracle存儲過程

+5

我認爲你需要更具體一點,可能會告訴我們一些代碼示例你正在嘗試做什麼。而且,我們不會發送解決方案,但是有一個按鈕可以訂閱問題上發佈的答案。 – 2009-11-05 10:53:26

回答

3

一個腳本來創建多個程序應該是這樣的:

create or replace procedure proc1 (param1 varchar2) 
is 
begin 
    null; 
end; 
/

create or replace procedure proc2 (param1 varchar2) 
is 
begin 
    null; 
end; 
/

create or replace procedure proc3 
is 
begin 
    null; 
end; 
/

您怎麼看怎麼樣?

最佳實踐始終是擺在包裝相關的存儲過程反正:

create or replace package package1 is 

    procedure proc1 (param1 varchar2) 
    is 
    begin 
     null; 
    end; 

    procedure proc2 (param1 varchar2) 
    is 
    begin 
     null; 
    end; 

    procedure proc3 
    is 
    begin 
     null; 
    end; 

end package1; 
/
2

我希望你錯過了每道工序後/。

0

我認爲大衛和託尼都明白道理。

檢查的第一件事是,你已經結束每一道工序與斜線/使甲骨文能夠互相識別過程結束。

由於存儲過程指令/語句由分開; Oracle不知道什麼時候語句完成的程序,這就是爲什麼你需要使用另一個「終結者」

第二件事情是,如果你有可以分爲幾個程序,那麼你應該創建一個包,記住創建包定義和包體。

CREATE OR REPLACE PACKAGE PCKG1 AS 
    PROCEDURE PROC1; 
    PROCEDURE PROC2 (PARAM1 VARCHAR2); 
END PCKG1; 
/


CREATE OR REPLACE PACKAGE BODY PCKG1 AS 

    PROCEDURE PROC1 IS 
    BEGIN 
     -- YOUR CODE HERE -- 
    END PROC1; 

    PROCEDURE PROC2 (PARAM1 VARCHAR2) IS 
    BEGIN 
     -- YOUR CODE HERE -- 
    END PROC2; 

END PCKG1; 
/

通過這種方式,您可以在開發幾十個人時輕鬆找到您的程序/函數。

給大家的好答案。

0

放置一個正斜槓

/ 

在單獨的行兩個程序之間。

Oracle會接受它作爲一個新的聲明