有人在 DB2 LUW 中使用模組嗎?
我們的環境目前是 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
,但允許B
並C
呼叫它)。這聽起來非常有趣。但它也有它的缺點。我猜它不是任何 SQL 標準的一部分,而是特定於 IBM DB2 的東西。即使這樣,您也不能通過 Data Studio 或控制中心直接與模組互動(除了
CALL
面向外部的過程/功能)。而且您也不能直接在 IBM 的 InfoSphere Data Architect 中創建它們。所以我必須獨立維護 DDL。所以模組概念聽起來很方便。我可以隱藏一些東西並選擇可以呼叫的東西,以確保有人不會濫用任何東西。
但是,鑑於命令行之外的 IBM 工具似乎不支持它……我想知道……誰都使用模組(特別是在 DB2 LUW 中)?有沒有人?這有意義嗎?如果沒有,是否有另一種方法可以實現我對程式碼模組化的想法,同時使“模組”無法直接呼叫?
我無法回答你所有的問題,但它的價值:
- SQL 模組似乎是 SQL/PSM 2008 標準的一部分。至少它們出現在草稿版本中,可以在網際網路上找到。
- 工具最終會趕上伺服器功能。同時,您可以使用工具目前支持的兼容Oracle的PL/SQL方言來創建PL/SQL包,它們本質上是一樣的。
- 是的,人們確實使用模組。許多 DB2 系統提供的常式都是在模組中實現的。
- 雖然您可以通過授予適當的權限來限制對模組外部常式的直接呼叫,但如果沒有“模組”,您將無法“模組化”任何東西。