gpt4 book ai didi

oracle - 在包之间传递关联数组作为参数

转载 作者:行者123 更新时间:2023-12-04 02:17:23 30 4
gpt4 key购买 nike

我有两个独立的 Oracle (v9.2) PL/SQL 包,并且我正在尝试从 package1 中的过程传递关联数组(即索引表),作为参数传递给 package1 中的过程包2。这可能吗?当我编译 package1 时,我不断收到PLS-00306:调用“ROLLUP_TO_15”时参数数量或类型错误

数组定义为:

type list_tab is table of number(10)
index by binary_integer;

在两个包的规范中。在 package1 中的过程中,我将第二个包调用为 package2.rollup_to_15(chanList); 这是我收到编译错误的行(chanList 是一个变量输入list_tab)。

在package2中,过程定义为:

procedure rollup_to_15(channels in list_tab) is

我猜我的问题是类型是在每个包中单独定义的,因为我可以将“chanList”变量传递给第一个包中的其他过程,没有任何问题。

那么,是否可以在包之间传递关联数组?如果是这样,怎么办?

戴夫

最佳答案

是的,这是肯定的。

很难解释为什么在没有包规范示例的情况下会收到错误,但一般来说,要将用户定义的类型作为参数传递,您应该使用 define type 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;
/

您可以在任何 PL/SQL block 中使用 TTestType 类型,但不能在 SQL 中。

关于oracle - 在包之间传递关联数组作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5778640/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com