我想运行存储过程脚本,但我遇到的问题是,当我一次运行多个存储过程时,所有过程都被编译但是它不会单独创建所有这些过程,而是将它编译为单个程序。 任何人都可以帮我解决这个问题。
答案 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将接受它作为新语句