本文的第 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'))
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com