PostgreSQL 动态查询通过函数中的 2 个参数将 json string(text) 插入到 table(text)

PostgreSQL Dynamic query to insert a json string(text) to table(text) by 2 param in function

我在调用带有 2 个参数作为文本的函数以使其成为动态函数时遇到问题 SQL。问题是第一个参数有引号 ' 所以我的动态查询失败了。这是我的代码:

CREATE OR REPLACE FUNCTION "dbo"."sp_insertbulk"("tablename" text, "jsonitem" text)
RETURNS SETOF "pg_catalog"."void" AS $BODY$
BEGIN
    EXECUTE ('INSERT INTO '||  ||' SELECT * FROM json_populate_recordset(null::'||  ||','''||  ||'''::json)');
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;

我也尝试使用 Format():

  EXECUTE FORMAT('INSERT INTO %I SELECT * FROM json_populate_recordset(null::%I , %I::json)',,,);

但这会使我的 jsonitem 参数不可读

 ({""ShortName"":""abc"",""Name"":""abc"",""Slogan"":""abc"" )

您应该使用 quote_ident()%I 作为列名,使用 quote_nullable()%L 作为值。

请参阅 Postgres 文档中的 Executing Dynamic Commands