【问题标题】:Is it possible in oracle to trigger a SAS program after an insert or update on oracle table?在 oracle 表上插入或更新后,oracle 是否可以触发 SAS 程序?
【发布时间】:2015-10-16 00:22:56
【问题描述】:

我是 oracle 新手,我看到 Oracle 触发器可以在 oracle 表上完成更新或插入后触发一些操作。 是否可以在每次更新或插入 Oracle 表后触发 SAS 程序。

【问题讨论】:

  • 您是尝试从 Oracle 端还是 SAS 端执行此操作?
  • 没有尝试过......但如果可以的话,计划从 Oracle 方面进行。

标签: oracle sas


【解决方案1】:

有几种不同的方法可以做到这一点,但像这样的问题就是“仅仅因为你可以,并不意味着你应该”的例子。

当然,您的触发器可以在更新或插入时触发,并且可以调用程序包中的存储过程,该程序可以使用oracle host command 调用可以调用 SAS 的操作系统命令。

这里有一些问题:

  • 您真的想将 SAS 与您的 Oracle 数据库安装在同一台机器上吗?
  • 您真的希望每个插入或更新的事务都必须等到主机命令完成吗?如果 SAS 宕机了怎么办?您希望交易完成还是.....?
  • 您真的希望运行数据库的帐户具有启动权限或将信息发送到其他可执行文件吗?考虑安全风险。
  • 如果插入完成一条记录,则该操作是明确的。如果更新影响了一千条记录怎么办?您想向 SAS 发送什么信息?一千条更新语句?一份更新声明?

有更好的方法可以做到这一点,但完整的答案需要您提供更多关于最终目标和所涉及的业务逻辑的详细信息。我使用的一些方法包括:

  • 触发器将数据插入Oracle advanced queue。以预定的时间间隔将更改从队列中取出并将它们写入平面文件。编写一个文件观察器来查找文件并将信息发送到 SAS。
  • 编写一个 Java 程序来接受更改并发布它们
  • 使用 APEX Web 服务并将更改公开为一系列 JSON 或 REST 数据包。

【讨论】:

  • :1) SAS 已经安装在 Linux 上,我想在 LINUX 上触发一个 SAS 进程。 2)是的,我希望每个插入或更新的事务都必须等到主机命令完成然后触发 SAS。如果 SAS 关闭,则发送通知。 3)如果运行数据库的帐户有权启动或将信息发送到其他可执行文件(如 LINUX 上的 SAS),则可以。 4)当oracle表发生更改时,一旦更改完成,我想触发连接到oracle并在进一步计算中使用该oracle表的SAS程序。
猜你喜欢
  • 2013-11-22
  • 2019-07-28
  • 1970-01-01
  • 2021-02-26
  • 2017-06-26
  • 2010-12-22
  • 2019-12-22
  • 2012-03-30
  • 1970-01-01
相关资源
最近更新 更多