Stored procedures 调用包&x27;从另一个程序中选择一个程序
试图搜索,但我找不到 我有一个包名Stored procedures 调用包&x27;从另一个程序中选择一个程序,stored-procedures,plsql,oracle11g,package,Stored Procedures,Plsql,Oracle11g,Package,试图搜索,但我找不到 我有一个包名package_1,其中我有多个过程/函数。现在我想从另一个过程调用其中一个函数,这个过程不是这个包的一部分。我不能把这段代码放在那个包中(两者都在同一个模式上) 我正在尝试这个 package_1.函数_1(varchar_var_1,varchar_var_2,varchar_var_3) 但这给了我错误 问题2 上述函数返回一个对象,该对象是包中定义的记录类型。如何在过程中声明该类型的对象,以便在过程中分配响应 检查是否在包头/规范中声明。如果是你 将有权
package_1
,其中我有多个过程/函数。现在我想从另一个过程调用其中一个函数,这个过程不是这个包的一部分。我不能把这段代码放在那个包中(两者都在同一个模式上)
我正在尝试这个
package_1.函数_1(varchar_var_1,varchar_var_2,varchar_var_3)代码>
但这给了我错误
问题2
上述函数返回一个对象,该对象是包中定义的记录类型。如何在过程中声明该类型的对象,以便在过程中分配响应
检查是否在包头/规范中声明。如果是你
将有权访问它
函数必须返回一个值:
a_值:=包_1.函数_1(varchar_var_1,varchar_var_2,varchar_var_3)
检查包是否有效。如果它是无效的,那么就没有了
你能做的很多(直到它被修复)
如果函数返回记录类型,则需要在该记录类型的调用者中声明一个局部变量。差不多
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;
创建或替换过程您的\u过程\u名称()
作为
记录包1.记录类型;
...
开始
...
l_rec:=包1.功能名称(p1、p2、p3);
...
结束;
当然,这假设记录类型和函数都是在包规范中定义的,因此它们是公共的,而不仅仅是在包体中定义的包的私有成员。。。我在调用一个函数,为了进行测试,我没有将它的返回值赋给任何东西,Oracle认为我正在尝试调用一个过程。