データベース (DB2 9.7 上) A があり、テーブル X、Y、Z...n があるとします。データベース B に同じテーブル X、Y、Z...n を作成しました。同じ GRANT を提供したいデータベースAの場合と同様に、データベースBのユーザーに。したがって、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
どうすればこれを解決できますか? 助けてください..