Oracle存储过程

时间:2009-11-05 10:46:49

标签: oracle oracle10g

我想运行存储过程脚本,但我遇到的问题是,当我一次运行多个存储过程时,所有过程都被编译但是它不会单独创建所有这些过程,而是将它编译为单个程序。 任何人都可以帮我解决这个问题。

4 个答案:

答案 0 :(得分: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;
/

答案 1 :(得分:2)

我希望你在每次手术后都错过了。

答案 2 :(得分:0)

我认为大卫和托尼都明白了这一点。

要检查的第一件事是你已经用斜线 / 结束了每个程序,以便oracle可以识别每个程序的结束。

由于存储过程指令/语句由 分隔; Oracle不知道语句何时完成该过程,这就是您需要使用另一个“终结符”的原因< / p>

第二件事是,如果你有几个可以分类的程序,那么你应该创建一个包,记住创建包定义和包体。

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;
/

这样,当你开发了几十个时,你就能轻松找到你的程序/功能。

每个人的好答案。

答案 3 :(得分:0)

放置正斜杠

/

两个程序之间的单独行。

然后,Oracle将接受它作为新语句