我有两个数据库。一个包含软件包并且始终可用。另一个存储数据并且每天都在重建。
第一个数据库上的包正在对第二个数据库进行查询。现在我有查询,它们本身需要一些功能。我在第二个得到了一个星型模式,有时我需要一个包含所有详细信息的选择。
就像是SELECT getDetails(Master-pk) FROM xyz WHERE abc;
该函数getDetails(pk)
将获取此键的所有详细信息并在一个字符串中返回它们:例如'detail1,detail2,...'
由于性能问题,我不能将这些功能放在其他软件包所在的数据库上,而必须将它们放在每天都在重建的数据库上。
所以我想在每次开始查询之前创建包。在本地,这适用于DBMS_SQL.parse(curID, VARCHAR2<b>A</b>, first, last, 1);
但DBMS_SQL.parse@DBLink(..)
确实给了我一个 PLS-306。参数的数量或类型错误。
我的限制是:
- 我不能将包包含在任何启动脚本或其他任何内容中。
- 该软件包必须在第二个 DB 上可用。
否:dbms_sql.parse(id, 'SELECT getDetails@firstDB(pk) FROM..',1);
表现不够好。