2009-11-05 205 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会接受它作为一个新的声明