こちらの記事の続編です。
お題:Db2 for i のRCACの数値カラムをヌル値でマスクしたい
回答サンプルは下記のようになります。
ユーザー GOMA2 は売掛残TKUZANカラムをヌル値で返す、それ以外のユーザーはTKUZANカラムの値を返す。
CREATE PERMISSION
GOMALIB.P8 ON GOMALIB.TOKMSPRCA4
FOR ROWS WHERE CURRENT_USER = 'GOMA2 '
ENFORCED FOR ALL ACCESS ENABLE ;
CREATE MASK GOMALIB.M4 ON GOMALIB.TOKMSPRCA4 AS TOKMSPRCA4
FOR COLUMN TKUZAN
RETURN
CASE WHEN ( CURRENT_USER = 'GOMA2 ' )
THEN
NULL
ELSE
TOKMSPRCA4.TKUZAN
END
ENABLE;
ALTER TABLE GOMALIB.TOKMSPRCA4 ACTIVATE COLUMN ACCESS CONTROL ;
ポイントは下記黄色部のCASE式の書き方です。
Db2 for i CASE式のマニュアル
IBM i infoセンター7.5 : https://www.ibm.com/docs/ja/i/7.5?topic=expressions-case-expression
上記ページの下記の記述がサンプルSQL文の黄色個所に該当するようです。
マスク値としてヌル値をしていたカラムへのアクセス結果例
Excelからマスク指定されたユーザーIDでODBC接続
QUERY for i
CASE式、色々な指定ができるようです。