如何直接从 PL/SQL 调用 PRO*C 程序?
How can I call a PRO*C program directly from PL/SQL?
我在这里找不到类似的问题。
我有一个名为 pro_c.pc
的 PRO*C 程序。我怎样才能在一段 PL/SQL 代码中调用和执行它?!有人可以给我一个简单的例子吗?!
您可以 link 外部库(Windows DLL 或 UNIX“.so”文件)到 Oracle,然后使它们可通过 PLSQL 调用。这至少从 Oracle 8i 开始就存在了。
尽管这需要服务器上的 DBA 权限才能进行设置,但目前可能不是推荐的方法....但对于处理运行处理大量数据很有用。
有关详细信息,请参阅 here。
直接调用实际程序,而不是从 PLSQL 调用库函数,将通过 DBMS_SCHEDULER 间接完成,正如@Justin 建议的最简单方法,创建一个带有 PROGRAM_TYPE 的程序作为 EXECUTABLE .有关详细信息,请参阅 here。
执行此操作时需要注意几件事,该程序将 运行 作为(假设 UNIX)"oracle" 用户 - 带来一些安全考虑,例如如果程序创建一个文件,它将被创建为 oracle 所有,因此 "application" 用户可能无法访问。该程序将 运行 在 Oracle 数据库服务器上。
我在这里找不到类似的问题。
我有一个名为 pro_c.pc
的 PRO*C 程序。我怎样才能在一段 PL/SQL 代码中调用和执行它?!有人可以给我一个简单的例子吗?!
您可以 link 外部库(Windows DLL 或 UNIX“.so”文件)到 Oracle,然后使它们可通过 PLSQL 调用。这至少从 Oracle 8i 开始就存在了。
尽管这需要服务器上的 DBA 权限才能进行设置,但目前可能不是推荐的方法....但对于处理运行处理大量数据很有用。
有关详细信息,请参阅 here。
直接调用实际程序,而不是从 PLSQL 调用库函数,将通过 DBMS_SCHEDULER 间接完成,正如@Justin 建议的最简单方法,创建一个带有 PROGRAM_TYPE 的程序作为 EXECUTABLE .有关详细信息,请参阅 here。
执行此操作时需要注意几件事,该程序将 运行 作为(假设 UNIX)"oracle" 用户 - 带来一些安全考虑,例如如果程序创建一个文件,它将被创建为 oracle 所有,因此 "application" 用户可能无法访问。该程序将 运行 在 Oracle 数据库服务器上。