我有一个数据库(在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您好,感谢您的回答,但我做了一些修改您的查询,它的工作对我罚款,然后。请在我的答案中找到更新的查询。 –