我在postgres EX中设置了一个序列:seq_id_gen。当我将此序列传递给我的静态查询时,传入字符串并且它不会被评估。有没有办法剥去报价?有没有人知道如何在不动态构建此查询的情况下执行此操作?
我的SQL查询是
INSERT into table (SELECT $1, $2, $3,$4)
在我的函数中,我通过
调用此查询query(myquery, ['currval(\'seq_id_gen\')' , param1, param2, param3]);
该声明变为
会发生什么INSERT into table (SELECT 'currval(\'seq_id_gen\')' , param1, param2, param3)
答案 0 :(得分:0)
如果要在其中一个参数中评估SQL代码,则必须使用动态SQL,如下所示:
EXECUTE 'INSERT into table VALUES ('
|| param1 || ', '
|| param2 || ', '
|| param3 || ', '
|| param4 ')';
确保没有用户生成的输入可以与这样的结构一起使用,因为它会使您容易受到SQL injection的攻击。</ p>