我想在Postgres 9.5中动态生成查询。
这是我的表:
| id | ObjectType | content |
-----+-------------+--------------------------------
| 1 | test | {"test_name": "test object"} |
----------------------------------------------------
这是我的查询
DO $$
DECLARE name text;
DECLARE label text;
BEGIN
select 'test' into name;
select 'test object' into label;
insert into "Constantes" (objecttype,content) values ('test','{"test_name":"test object"}')
END $$;
我希望在插入查询中替换'test' by the var 'name'
并替换' test_name'通过
name+ '_name
最后替换'test object' by the label variable
。
我没有设法,我尝试使用+运算符,||操作员,但没有任何作用。
我的目标只是改变名称'和'标签'变量,因为我需要使用不同的值多次执行此查询。
答案 0 :(得分:1)
我希望你在函数中使用这个块并通过传递值('name' - >'label')来调用该函数。如果是这样,您可以使用编号参数。查看官方的postgresql文档,它还有一些你可以使用的例子 - https://www.postgresql.org/docs/9.5/static/xfunc-sql.html
CREATE OR REPLACE FUNCTION insertRow(text, text) returns void AS $$
DECLARE
name ALIAS FOR $1;
label ALIAS FOR $2;
BEGIN
insert into Constantes (objecttype,content) VALUES (name, '{"' || name || '_name":"' || label || '"}');
END;
$$ LANGUAGE plpgsql;