栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

跨数据库链接在oracle中调用存储的函数(返回用户定义类型的数组)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

跨数据库链接在oracle中调用存储的函数(返回用户定义类型的数组)

据我所知,您正在尝试的是正确的语法,但是在任何情况下,由于您怀疑返回类型是用户定义的,因此它不起作用。

这是一个带有内置流水线功能的示例。当然,在本地调用它是可行的:

SELECt * FROM TABLE(dbms_xplan.display_cursor('a',1,'ALL'));

返回值:

SQL_ID: a, child number: 1 cannot be found

通过数据库链接调用它:

SELECt * FROM TABLE(dbms_xplan.display_cursor@core('a',1,'ALL'));

失败并显示此错误:

ORA-30626: function/procedure parameters of remote object types are not supported

可能是因为链接指向无法访问该程序包的特定架构,所以您正在获取ORA-904。但是无论如何,即使您在本地架构中定义了具有相同名称的相同类型,这也行不通,因为从Oracle的角度来看,它们仍然不是同一类型。

您当然可以远程查询一个视图,因此,如果存在一组定义明确的可能参数,则可以为每个参数组合创建一个视图,然后查询该视图,例如:

CREATE VIEW display_cursor_a_1_all AS  SELECt * FROM TABLE(dbms_xplan.display_cursor('a',1,'ALL'))  ;

如果可能的参数值范围太大,则可以创建一个过程,该过程会在给定任何参数集的情况下动态创建所需的视图。然后,每次要执行查询时,您都需要执行两个步骤:

EXECUTE  package.create_view@remote(parameters)SELECt * FROM created_view@remote;

然后,您必须考虑多个会话是否可以并行调用此方法,如果需要,则如何防止它们相互踩踏。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号