[英]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.