-1

试图搜索,但我找不到它。

我有一个包名package_1,并且我有多个过程/功能。现在我想从另一个过程中调用其中一个函数,它不是这个包的一部分。我不能把这段代码放在那个包中(两者都在同一个模式上)。

我正在尝试这个

package_1.function_1(varchar_var_1, varchar_var_2, varchar_var_3);

但这给了我错误。

QUESTION2 上述函数返回一个对象,该对象是包中定义的记录类型。如何在我的过程中声明该类型的对象,以便我可以在我的过程中分配响应?

4

2 回答 2

0
  1. 检查它是否在包头/规范中声明。如果是,您将可以访问它。
  2. 函数必须返回一个值:

    a_value := package_1.function_1(varchar_var_1, varchar_var_2, varchar_var_3);

  3. 检查包裹是否有效。如果它无效,那么您无能为力(直到它被修复)。

于 2013-08-15T14:52:23.513 回答
0

如果函数返回记录类型,您需要在该记录类型的调用者中声明一个局部变量。就像是

CREATE OR REPLACE PROCEDURE your_procedure_name( <<parameters>> )
AS
  l_rec package_1.record_type;
  ...
BEGIN
  ...
  l_rec := package_1.function_name( p1, p2, p3 );
  ...
END;

当然,这假设记录类型和函数都在包规范中定义,因此它们是公共的,而不是仅仅被定义为包的私有成员,仅在包体中定义。

于 2013-08-15T15:00:02.950 回答