【问题标题】:Create PLSQL package on linked database在链接数据库上创建 PLSQL 包
【发布时间】:2013-04-18 08:54:53
【问题描述】:


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

第一个数据库上的包正在对第二个数据库进行查询。现在我有查询,它们本身需要一些功能。我在第二个得到了一个星型模式,有时我需要一个包含所有详细信息的选择。
类似SELECT getDetails(Master-pk) FROM xyz WHERE abc;

函数getDetails(pk) 将获取此键的所有详细信息并在一个字符串中返回它们:like '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); 表现不够好。

【问题讨论】:

    标签: sql oracle plsql database


    【解决方案1】:

    为远程包创建同义词。类似的东西

    create synonym remote_dbms_sql for dbms_sql@db_link
    /
    

    那么你应该可以在本地执行:

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

    【讨论】:

    • 感谢您的快速回复。试过了,还是抛出了同样的异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    相关资源
    最近更新 更多