如何从存储过程PL / SQL调用包

时间:2017-10-24 20:11:46

标签: oracle stored-procedures plsql

这是我的包裹:

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;

1 个答案:

答案 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