एक ही कथन (प्रकार) में ऐसा करने का एकमात्र तरीका एक फ़ंक्शन बनाना है, अन्यथा आप या तो विशेष रूप से सभी दृश्यों को सूचीबद्ध कर रहे हैं या आप सभी तालिकाओं को दे रहे हैं, फिर गैर-विचारों को रद्द कर रहे हैं।
मैंने इसे जल्दी लिखा, लेकिन इसका परीक्षण किया। आपको आवश्यकतानुसार ट्विक करने की आवश्यकता हो सकती है:
CREATE OR REPLACE FUNCTION fn_grant_all_views(schema_name TEXT, role_name TEXT)
RETURNS VOID AS $func$
DECLARE view_name TEXT;
BEGIN
FOR view_name IN
SELECT viewname FROM pg_views WHERE schemaname = schema_name
LOOP
EXECUTE 'GRANT ALL PRIVILEGES ON ' || schema_name || '.' || view_name || ' TO ' || role_name || ';';
END LOOP;
END; $func$ LANGUAGE PLPGSQL
उपयोग:
SELECT fn_grant_all_views('my_schema','my_role');