【问题标题】:How can I call a PRO*C program directly from PL/SQL?如何直接从 PL/SQL 调用 PRO*C 程序?
【发布时间】:2015-05-20 13:43:52
【问题描述】:

我在这里找不到类似的问题。

我有一个名为 pro_c.pc 的 PRO*C 程序。如何在一段 PL/SQL 代码中调用和执行它?!谁能给我一个简单的例子?!

【问题讨论】:

  • 这并不简单。为什么要以这种方式构建系统? PL/SQL 可以通过 Java 存储过程或通过 dbms_scheduler 包调用数据库主机操作系统。但这将需要管理相当多的活动部分,因此这不是您通常会设计的。
  • 感谢您的回复!通过 dbms_scheduler 还会复杂吗?!我正在使用 Quest Code Tester 来测试我的代码。我一直在考虑在Quest Code Tester中执行pro*c
  • 鉴于有很多测试框架,我强烈建议使用其中一个来测试在数据库之外运行的代码,而不是让数据库调用操作系统来调用可执行文件只是因为你有一个测试数据库调用的应用程序。
  • 感谢您的提示,我想我会使用其他工具来测试 pro*c 程序。

标签: sql c oracle oracle-pro-c


【解决方案1】:

您可以将外部库(Windows DLL 或 UNIX“.so”文件)链接到 Oracle,然后通过 PLSQL 使它们可调用。至少从 Oracle 8i 开始就存在这种情况。

这虽然需要服务器上的 DBA 权限来进行设置,但现在可能不是推荐的方法....但对于处理大量数据很有用。

更多详情请见here

直接调用实际程序,而不是来自 PLSQL 的库函数,将通过 DBMS_SCHEDULER 间接完成,@Justin 建议这是最简单的方法,创建一个 PROGRAM_TYPE 作为 EXECUTABLE 的程序。请参阅here 了解更多信息。

执行此操作时需要注意几件事,程序将以(假设为 UNIX)“oracle”用户身份运行 - 带来一些安全考虑,例如如果程序创建了一个文件,它将被创建为由 oracle 拥有,因此“应用程序”用户可能无法访问。该程序将在 Oracle 数据库服务器上运行。

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2011-03-02
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多