0
我有一个名为“融合”的现有包。包定义是这样创建包创建包体记录数据类型
create or replace package "fusion' as
create procedure first_procedure(abc in number)
create procedure second_procedure(efg in number)
end fusion;
封装体的定义是一样
create or replace package body fusion as
procedure first_procedure(abc in number) is
begin
....
end first_procedure;
procedure second_procedure(efg in number) is
begin
....
end second_procedure;
end fusion;
在这种现有包,我需要包括具有一个自定义记录类型作为输出的第三步骤。那么我应该在哪里声明自定义记录类型?我已经写像
create or replace package "fusion' as
type finalrecord is record(column1 varchar2,column2 number);
type mytable is table of finalrecord;
create procedure first_procedure(abc in number)
create procedure second_procedure(efg in number)
create procedure third_procedure(mt out mytable)
end fusion;
和封装主体作为
create or replace package body fusion as
procedure first_procedure(abc in number) is
begin
....
end first_procedure;
procedure second_procedure(efg in number) is
begin
....
end second_procedure;
procedure third_procedure(mt out mytable) is
myissueid number(2);
begin
--do something
end third_procedure;
end fusion;
这在的SQLDeveloper编译,但是示出这些错误
子程序或游标“third_procedure”在包规范声明并且必须在包体中定义。
MYTABLE应该声明
您展示更新的软件包规范有几个错误,但它不是,如果你清楚”我们介绍了在这里更改发布代码的方法。 [它清理了一下就可以工作](http://sqlfiddle.com/#!4/9bee6/1)。假设你确实改变了它,你确实似乎在更新后的主体之前重新编译了更新的规范,但它是否说规范中有错误?如果它是干净的,那么你的类型和参数名称是否完全一样? –