Dav*_*Kub 2 oracle stored-procedures associative-array parameter-passing
我有两个独立的Oracle(v9.2)PL/SQL包,我试图从package1中的过程传递一个关联数组(即索引表),作为package2中过程的参数.这可能吗?我PLS-00306: wrong number or types of arguments in call to 'ROLLUP_TO_15'在编译package1时不断得到.
该数组定义为:
type list_tab is table of number(10)
index by binary_integer;
Run Code Online (Sandbox Code Playgroud)
在两个包的规格.在package1的过程中,我正在调用第二个包,因为package2.rollup_to_15(chanList);那是我得到编译错误的行(chanList是一个类型的变量list_tab).
在package2中,过程定义为:
procedure rollup_to_15(channels in list_tab) is
Run Code Online (Sandbox Code Playgroud)
我猜我的问题是类型是在每个包中单独定义的,因为我可以将`chanList'变量传递给第一个包中的其他过程而没有任何问题.
那么,是否可以在包之间传递关联数组?如果是这样,怎么样?
戴夫
是的,这是可能的.
很难解释为什么没有包规范样本会收到错误,但通常将用户定义的类型作为参数传递,您应该使用定义类型DDL,或者在包规范中定义类型.
我想你想要后一个变种:)
所以这是一个例子:
create or replace package TestPackage_1
as
type TTestType is table of varchar2(1) index by varchar2(1);
end TestPackage_1;
/
create or replace package TestPackage_2
as
procedure Dummy(aParam TestPackage_1.TTestType);
end TestPackage_2;
/
Run Code Online (Sandbox Code Playgroud)
您可以TTestType在任何PL/SQL块中使用type,但不能在SQL中使用.
| 归档时间: |
|
| 查看次数: |
5406 次 |
| 最近记录: |