利用DB2 V10.1中的全局變量實現全球化

本文的第 1 部分 展示了 db2 v10.1 的安全性特性如何滿足將來自多個國家(行政區)的數據整合到單獨一組表中的組織的關鍵業務需求: 1. 使本地用戶僅能訪問其所在國家(行政區)的數據 2. 使地區用戶僅能訪問其所在地區的數據 3. 針對地區用戶,實現地方敏感

本文的第 1 部分 展示了 db2 v10.1 的安全性特性如何滿足將來自多個國家(行政區)的數據整合到單獨一組表中的組織的關鍵業務需求:

1. 使本地用戶僅能訪問其所在國家(行政區)的數據
2. 使地區用戶僅能訪問其所在地區的數據
3. 針對地區用戶,實現“地方敏感型”,自動將不同國家(行政區)的幣種值轉為通用幣種(例如,為了匯總分別使用新加坡貨幣和中國香港貨幣的兩種商品的價格,需要進行幣種轉換)
4. 根據用戶是本地用戶還是地區用戶來屏蔽列數據

本文以第1 部分作為基礎,展示了如何利用全局變量和角色來降低代碼復雜性、提高有用性,同時動態計算對地方敏感的日期/時間段。

提高指定日期/時間值時的有用性

全局變量可用于使 SQL 更易理解。您不必再在 SQL 語句中指定復雜的公式,而是可以為該公式創建一個全局變量,直接指定該變量。全局變量提供了共享的通用例程,可在任何 SQL 中使用它們,這些例程消除了重復編寫相同代碼的需要。除此之外,利用全局變量時,只需在指定公式的位置創建變量一次,因此可減少 SQL 中的錯誤。

全局變量支持使用描述性名稱,這有助于用戶或讀者確定應執行哪些計算。例如,指定一周的第一天時,可以在查詢中包含這樣的計算:

SELECT … FROM REAL_ESTATE_SALES
WHERE PROPERTY_TYPE = ‘CONDO’
AND EFFECTIVE_DATE =
CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)

我們也可以創建一個全局變量來改善可讀性。這允許任何查看 SQL 語句的用戶確定查詢執行的日期計算:

CREATE VARIABLE FIRST_DAY_OF_WEEK DATE
DEFAULT
(CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)

現在,可將查詢寫為:

SELECT … FROM REAL_ESTATE_SALES
WHERE PROPERTY_TYPE = ‘CONDO’
AND EFFECTIVE DATE = FIRST_DAY_OF_WEEK

全局變量允許我們指定一個“常量”,全局變量的名稱表示業務查詢執行的操作。下面給出了幾個常用的日期/時間段:
1. 今天
2. 昨天
3. 明天
4. 一個月的第一天
5. 一個月的最后一天
6. 一個星期的第一天
7. 當前季度的第一天
利用全局變量,可以通過用戶友好、易于閱讀的格式表示這些時間段。下面給出了上述時間段的定義。
今天:

CREATE VARIABLE TODAY DATE DEFAULT CURRENT DATE

昨天:

CREATE VARIABLE YESTERDAY DATE DEFAULT CURRENT DATE – 1 DAY

明天:

CREATE VARIABLE TOMORROW DATE DEFAULT CURRENT DATE + 1 DAY

一個月的第一天:

CREATE VARIABLE FIRST_DAY_OF_CURRENT_MONTH DATE
DEFAULT
(CURRENT_DATE – (DAY (CURRENT_DATE)-1) DAYS)

一個月的最后一天:

CREATE VARIABLE LAST_DAY_OF_CURRENT_MONTH DATE
DEFAULT
(LAST_DAY (CURRENT DATE))

一個星期的第一天:

CREATE VARIABLE FIRST_DAY_OF_WEEK DATE
DEFAULT
(CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)

當前季度的第一天(請注意,定義中也使用了全局變量 FIRST_DAY_OF_THE_CURRENT_MONTH):

CREATE VARIABLE FIRST_DAY_OF_QUARTER DATE
DEFAULT
(ROUND (FIRST_DAY_OF_CURRENT_MONTH,’Q’))

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享