Stored-Procedures

有人在 DB2 LUW 中使用模組嗎?

  • August 25, 2014

我們的環境目前是 AIX 上的 DB2 9.7 Fix Pack 4。

我正在設計和編碼一些 SQL PL 儲存過程,這些儲存過程負責將數據歸檔到歸檔模式中,然後從主模式中清除舊的/不需要的數據。

我創建了一些使用者定義類型 (UDT),特別是行類型和游標類型。我正在考慮將我的邏輯劃分為三個儲存過程。Proc A將用於清除與我的主 EVENT 表相關的一組特定數據(即,EVENT它下面的所有內容)。我真的不希望其他人能夠這樣稱呼。我只想模組化邏輯。Proc B將從EVENT(和其他表)中歸檔最終使用者想要的數據,然後呼叫Proc A以清理原始數據。Proc C將用於查找EVENTs可以丟棄的內容,然後呼叫Proc A實際工作。

現在我可以創建彼此獨立的所有這些,然後以這種方式部署它們。或者….我可以使用一個模組。據我了解,模組允許我將相關功能(類型、儲存過程、函式等)關聯在一起。它還允許我決定我希望哪些對象可以在模組外部訪問,即可以直接呼叫/使用,而哪些對像只能在模組內部呼叫(例如上面的情況,我可以在其中隱藏儲存的Proc A,但允許BC呼叫它)。

這聽起來非常有趣。但它也有它的缺點。我猜它不是任何 SQL 標準的一部分,而是特定於 IBM DB2 的東西。即使這樣,您也不能通過 Data Studio 或控制中心直接與模組互動(除了CALL面向外部的過程/功能)。而且您也不能直接在 IBM 的 InfoSphere Data Architect 中創建它們。所以我必須獨立維護 DDL。

所以模組概念聽起來很方便。我可以隱藏一些東西並選擇可以呼叫的東西,以確保有人不會濫用任何東西。

但是,鑑於命令行之外的 IBM 工具似乎不支持它……我想知道……誰都使用模組(特別是在 DB2 LUW 中)?有沒有人?這有意義嗎?如果沒有,是否有另一種方法可以實現我對程式碼模組化的想法,同時使“模組”無法直接呼叫?

我無法回答你所有的問題,但它的價值:

  • SQL 模組似乎是 SQL/PSM 2008 標準的一部分。至少它們出現在草稿版本中,可以在網際網路上找到。
  • 工具最終會趕上伺服器功能。同時,您可以使用工具目前支持的兼容Oracle的PL/SQL方言來創建PL/SQL包,它們本質上是一樣的。
  • 是的,人們確實使用模組。許多 DB2 系統提供的常式都是在模組中實現的。
  • 雖然您可以通過授予適當的權限來限制對模組外部常式的直接呼叫,但如果沒有“模組”,您將無法“模組化”任何東西。

引用自:https://dba.stackexchange.com/questions/72785