आपको PL/PgSQL EXECUTE . का उपयोग करना होगा स्टेटमेंट, DO . के माध्यम से ब्लॉक या PL/PgSQL फ़ंक्शन (CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql ) डायनेमिक SQL PostgreSQL द्वारा उपयोग की जाने वाली सामान्य SQL बोली में समर्थित नहीं है, केवल प्रक्रियात्मक PL/PgSQL संस्करण में।
DO
$$
BEGIN
EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd'));
END;
$$ LANGUAGE plpgsql;
format(...) फ़ंक्शन का %I और %L प्रारूप-विनिर्देशक क्रमशः उचित पहचानकर्ता और शाब्दिक उद्धरण करते हैं।
शाब्दिक के लिए मैं EXECUTE ... USING . का उपयोग करने की सलाह देता हूं के बजाय format(...) %L . के साथ , लेकिन तालिका/स्तंभ नामों जैसे पहचानकर्ताओं के लिए प्रारूप %I पैटर्न वर्बोज़ का एक अच्छा संक्षिप्त विकल्प है quote_ident कॉल।