这个问题在这里已经有答案了:
8年前关门了。
可能重复:
postgres动态查询功能
我希望使用下面查询返回的字符串作为其他查询的表名。
SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')
如您所见,它返回一个字符串。我希望使用它作为另一个查询的输入,例如。
CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd'))
AS * SELECT FROM backup
能做到吗?有什么线索吗?
1条答案
按热度按时间nbewdwxp1#
您将需要使用pl/pgsql
EXECUTE
声明,通过DO
block或pl/pgsql函数(CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql
). postgresql使用的普通sql方言不支持动态sql,只有过程pl/pgsql变量支持动态sql。这个
format(...)
函数的%I
以及%L
格式说明符分别进行正确的标识符和文字引用。对于文字,我建议使用
EXECUTE ... USING
而不是format(...)
与%L
,但对于表/列名等标识符%I
模式是一个很好的简洁替代冗长quote_ident
电话。