本文的第 1 部分 展示了 DB2 V10.1 的安全性特性如何滿足將來自多個國家(行政區(qū))的數(shù)據(jù)整合到單獨一組表中的組織的關(guān)鍵業(yè)務(wù)需求: 1. 使本地用戶僅能訪問其所在國家(行政區(qū))的數(shù)據(jù) 2. 使地區(qū)用戶僅能訪問其所在地區(qū)的數(shù)據(jù) 3. 針對地區(qū)用戶,實現(xiàn)地方敏感
本文的第 1 部分 展示了 DB2 V10.1 的安全性特性如何滿足將來自多個國家(行政區(qū))的數(shù)據(jù)整合到單獨一組表中的組織的關(guān)鍵業(yè)務(wù)需求:
1. 使本地用戶僅能訪問其所在國家(行政區(qū))的數(shù)據(jù)
2. 使地區(qū)用戶僅能訪問其所在地區(qū)的數(shù)據(jù)
3. 針對地區(qū)用戶,實現(xiàn)“地方敏感型”,自動將不同國家(行政區(qū))的幣種值轉(zhuǎn)為通用幣種(例如,為了匯總分別使用新加坡貨幣和中國香港貨幣的兩種商品的價格,需要進行幣種轉(zhuǎn)換)
4. 根據(jù)用戶是本地用戶還是地區(qū)用戶來屏蔽列數(shù)據(jù)
本文以第1 部分作為基礎(chǔ),展示了如何利用全局變量和角色來降低代碼復(fù)雜性、提高有用性,同時動態(tài)計算對地方敏感的日期/時間段。
提高指定日期/時間值時的有用性
全局變量可用于使 SQL 更易理解。您不必再在 SQL 語句中指定復(fù)雜的公式,而是可以為該公式創(chuàng)建一個全局變量,直接指定該變量。全局變量提供了共享的通用例程,可在任何 SQL 中使用它們,這些例程消除了重復(fù)編寫相同代碼的需要。除此之外,利用全局變量時,只需在指定公式的位置創(chuàng)建變量一次,因此可減少 SQL 中的錯誤。
全局變量支持使用描述性名稱,這有助于用戶或讀者確定應(yīng)執(zhí)行哪些計算。例如,指定一周的第一天時,可以在查詢中包含這樣的計算:
SELECT … FROM REAL_ESTATE_SALES
WHERE PROPERTY_TYPE = ‘CONDO’
AND EFFECTIVE_DATE =
CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)
我們也可以創(chuàng)建一個全局變量來改善可讀性。這允許任何查看 SQL 語句的用戶確定查詢執(zhí)行的日期計算:
CREATE VARIABLE FIRST_DAY_OF_WEEK DATE
DEFAULT
(CURRENT_DATE – (DAYOFWEEK_ISO (CURRENT_DATE)-1) DAYS)
現(xiàn)在,可將查詢寫為:
SELECT … FROM REAL_ESTATE_SALES
WHERE PROPERTY_TYPE = ‘CONDO’
AND EFFECTIVE DATE = FIRST_DAY_OF_WEEK
全局變量允許我們指定一個“常量”,全局變量的名稱表示業(yè)務(wù)查詢執(zhí)行的操作。下面給出了幾個常用的日期/時間段:
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'))
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com