我有一個數據庫(在DB2 9.7上)假設我有表X,Y,Z ...... 現在我創建了相同的表X,Y,Z。 ..n在數據庫B中我想爲數據庫B中的用戶提供與數據庫A中相同的GRANT。因此,基於SYSCAT.TABAUTH,我試圖生成GRANT SQL。我已經爲它寫了以下查詢:從syscat.tabauth表動態生成GRANT SQL表
db2 "select 'GRANT '||
case INSERTAUTH
WHEN 'Y' THEN 'INSERT,'
WHEN 'N' THEN ' '
END||
case ALTERAUTH
WHEN 'Y' THEN 'ALTER,'
WHEN 'N' THEN ' '
END||
case DELETEAUTH
WHEN 'Y' THEN 'DELETE,'
WHEN 'N' THEN ' '
END||
case SELECTAUTH
WHEN 'Y' THEN 'SELECT,'
WHEN 'N' THEN ' '
END||
case UPDATEAUTH
WHEN 'Y' THEN 'UPDATE,'
WHEN 'N' THEN ' '
END||
' ON '||TABSCHEMA||'.'||TABNAME||' TO '||GRANTEE from SYSCAT.TABAUTH
where INSERTAUTH='Y' OR ALTERAUTH='Y' OR DELETEAUTH='Y' OR SELECTAUTH='Y' OR UPDATEAUTH='Y'"
但是,我面臨的問題是額外的','在結束。 假設用戶只插入權威性,上面的查詢會產生GRANT SQL爲:
GRANT INSERT, ON SCHEMA.TABLE TO GRANTEENAME
or if user has insert and select grants then:
GRANT INSERT,SELECT, ON SCHEMA.TABLE TO GRANTEENAME
我該如何解決這個問題?請幫助..
Bhamby您好,感謝您的回答,但我做了一些修改您的查詢,它的工作對我罰款,然後。請在我的答案中找到更新的查詢。 –