【发布时间】:2014-05-27 05:46:51
【问题描述】:
我试图在 postgres 函数的查询中附加单引号,但导致错误,请查看我的 postgres 函数,
CREATE OR REPLACE function test() returns my_type as $$
declare rd varchar := '56';
declare personphone varchar := 'Philip Dannes';
declare result my_type;
declare SQL VARCHAR(300):=null;
BEGIN
-- Mandatory / Static part of the Query here
SQL = 'select pt.id from product_template pt inner join product_product pp on pt.id=pp.id where ';
IF rd IS NOT NULL
then
SQL = SQL || 'pp.radio_phone = '|| rd;
else
SQL = SQL || 'pp.radio_phone = '|| rd;
end if;
IF personphone IS NOT NULL
then
SQL = SQL || ' and pp.person_phone = '|| personphone;
else
SQL = SQL || ' and pp.person_phone = '|| personphone;
end if;
SQL = SQL || ';';
EXECUTE SQL;
return result;
END
$$ LANGUAGE plpgsql;
当我执行它时,它在“Philip Daves”上出现错误,并在附加为后返回查询,
Select pt.id from product_template pt inner join product_product pp on pt.id=pp.id where
pp.radio_phone = 56 and pp.person_phone = Philip Dave
我知道错误是因为 56 和 Philip Dave 不在单引号中,当我使用单引号执行函数返回查询时它工作正常。
如何在此查询中附加单引号??
我试过这样,
SQL = SQL || ' and pp.person_phone = '|| '' || personphone;
但 i 函数返回相同的查询
希望您的建议
提前致谢
【问题讨论】:
标签: python sql postgresql postgresql-9.1 concat