繁体   English   中英

为什么 query_to_xml 会为 Postgres 中的可变查询返回错误?

[英]Why does query_to_xml return an error for a volatile query in Postgres?

我想了解为什么这样的事情在 PostgreSQL 中不起作用:

SELECT query_to_xml('CREATE TABLE my_table (my_column INTEGER)', FALSE, TRUE, '')

它给出ERROR: CREATE TABLE is not allowed in a non-volatile function 很公平 - 但当我检查query_to_xml的签名时,它标记为易变的:

CREATE OR REPLACE FUNCTION pg_catalog.query_to_xml(
    query text,
    nulls boolean,
    tableforest boolean,
    targetns text)
    RETURNS xml
    LANGUAGE 'internal'
    COST 100
    VOLATILE STRICT PARALLEL UNSAFE
AS [...]

后续问题:如果不允许这样做,有没有其他方法可以在没有 PL/PgSQL 的情况下运行动态易失性查询?

手册

以下函数将 map 关系表的内容转换为 XML 的值。

这意味着您不能将此 function 用于 CREATE TABLE 语句,只能将表中的 SELECT 数据转换为 XML。

然而,错误信息可能会更好,我同意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM