这是我的包裹:
create or replace PACKAGE mypak AS
TYPE something1 IS RECORD (
x Date,
y VARCHAR2(100 BYTE),
z Number
);
TYPE something IS TABLE OF something1;
END mypak;
我的存储过程是:
create or replace procedure procedure_name(...) as
a date,
b varchar2,
c varchar2
begin
(...)
end procedure_name;
如何从存储过程调用包? 我试过" d something1",here," something1"在mypak包中定义..但它给了我一个错误。我如何将这个" something1",mypak包中定义的内容称为存储过程?
create or replace procedure procedure_name(...) as
a date,
b varchar2,
c varchar2,
d something1
begin
(...)
end procedure_name;
答案 0 :(得分:0)
使用.
(句点)完成对包中任何内容的引用。
create or replace procedure procedure_name(
a date,
b varchar2,
c varchar2,
d mypak.something1) as
begin
NULL;
end procedure_name;
标识符mypak
可以是当前架构中的包或同义词,公共同义词,也可以是其他架构的包或同义词。所以schemaX.package.type
也是有效的语法。
您不需要在包中声明的类型前缀的唯一时间是在同一个包中。因此,如果mypak声明了一个过程或函数,那么该过程或函数可以在不限定它的情况下引用something1
。