在链接数据库上创建PLSQL包

时间:2013-04-18 08:54:53

标签: sql oracle plsql database


我有两个数据库。一个包含包,并始终可用。另一个存储数据并且每天都在重建。

第一个数据库上的包正在对第二个数据库进行查询。现在我有了查询,需要自己的一些功能。我在第二个时候有一个星型模式,有时我需要一个包含行中所有细节的选择 像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。参数号码或类型错误。

我的限制是:

  1. 我不能在任何启动脚本中包含该包或者其他任何内容。
  2. 包必须在第二个DB上可用。
    否:dbms_sql.parse(id, 'SELECT getDetails@firstDB(pk) FROM..',1); 表现不佳。

1 个答案:

答案 0 :(得分:1)

创建远程包的同义词。像

这样的东西
create synonym remote_dbms_sql for dbms_sql@db_link
/

然后你应该能够在本地执行:

remote_dbms_sql.parse(curID, VARCHAR2<b>A</b>, first, last, 1);