小编ily*_*als的帖子

将$$放在PostgreSQL中以美元引用的字符串中

我在Postgres中有一个功能:

CREATE OR REPLACE FUNCTION upsert(sql_insert text, sql_update text) 
RETURNS integer AS
$BODY$
BEGIN
 EXECUTE sql_insert;
 RETURN 1;
EXCEPTION WHEN unique_violation THEN
 EXECUTE sql_update; 
 RETURN 2;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION upsert(text, text) OWNER TO dce;
Run Code Online (Sandbox Code Playgroud)

我通常使用此查询来调用该函数:

select upsert(
  $$INSERT INTO zz(a, b) VALUES (66, 'hahahaha')$$,
  $$UPDATE zz SET a=66, b='hahahaha' WHERE a=66$$
)
Run Code Online (Sandbox Code Playgroud)

有用.不幸的是,我的查询字符串不能包含$$,如下所示:

select upsert(
  $$INSERT INTO zz(a, b) VALUES (66, 'ha$$hahaha')$$,
  $$UPDATE zz SET a=66, b='hahahaha' WHERE a=66$$
)
Run Code Online (Sandbox Code Playgroud)

我已阅读此 …

postgresql syntax escaping dynamic-sql quoting

3
推荐指数
1
解决办法
5962
查看次数

标签 统计

dynamic-sql ×1

escaping ×1

postgresql ×1

quoting ×1

syntax ×1