आपको 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
कॉल।