2015-10-15 60 views
1

我是oracle新手,看到Oracle觸發器可以在更新或在oracle表上插入後觸發某些操作。 是否有可能在每次更新或在Oracle表上插入後觸發SAS程序。在oracle表上插入或更新後,oracle可能觸發SAS程序嗎?

+1

您是否試圖從Oracle側或SAS側做到這一點? –

+0

還沒有嘗試......但計劃從Oracle方面做到這一點,如果它的工作方式。 –

回答

0

有幾種不同的方法可以做到這一點,但像這樣的問題就是一個例子:「只因爲你可以,並不意味着你應該」。

可以肯定的是,您的觸發器可以在更新或插入時觸發,並且可以調用存儲過程的程序包,該程序包可以使用oracle host command來調用可調用SAS的操作系統命令。

這裏有一些問題:

  • 你真的想在同一臺機器上安裝SAS作爲Oracle數據庫?
  • 你確實希望插入或更新的每個事務都必須等待主機命令完成嗎?如果SAS倒閉會怎麼樣?你想交易完成還是.....?
  • 您確實希望運行數據庫的帳戶有權啓動或向其他可執行文件發送信息嗎?考慮安全風險。
  • 如果插入記錄一個記錄,則清除該動作。如果更新影響一千條記錄會怎麼樣?你想發送給SAS什麼信息?一千個更新語句?一個更新聲明?

有更好的方法來做到這一點,但完整的答案需要更多的細節從你的最終目標和業務邏輯。我使用的一些方法包括:

  • 觸發器將數據插入Oracle advanced queue。按照預定的時間間隔將更改從隊列中取出並寫入平面文件。寫一個文件觀察器來查找文件並將信息發送給SAS。
  • 編寫一個Java程序來進行更改併發送它們
  • 使用APEX Web服務並將更改公開爲一系列JSON或REST數據包。
+0

:1)SAS已經安裝在Linux上,我想在LINUX上觸發一個SAS進程。 2)是的,我希望插入或更新的每個事務都必須等待主機命令完成後才觸發SAS。如果SAS停機,則發送通知。 3)如果運行數據庫的帳戶有權啓動或將信息發送到其他可執行文件(如LINUX上的SAS),則可以。 4)當oracle表發生變化時,一旦更改完成,我想觸發連接到oracle的SAS程序,並在進一步的計算中使用該oracle表。 –