我有一个数据库(在 DB2 9.7 上)A 假设我有表 X、Y、Z...n 现在我在数据库 B 中创建了相同的表 X、Y、Z...n。我想提供相同的 GRANT对于数据库 B 中的用户,就像在数据库 A 中一样。因此,基于 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'"
但是,我面临的问题是末尾的附加“,”。假设用户只有 Insert auth,上述查询将生成 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
我该如何解决这个问题?请帮忙..