在执行插入语句中转义引号

时间:2014-04-22 22:35:08

标签: postgresql escaping quotes

我有一个在循环内部插入的函数。请参阅下面的功能。

        create temp table temp2 (id serial, other_value uuid);
        CREATE OR REPLACE function verify_uuid() returns varchar AS $$
        declare uu RECORD;
        BEGIN
            FOR uu IN  select * from temp1 
            loop
            execute 'INSERT INTO temp2 values ''' || uu ||''':uuid';
            END LOOP;
        END
        $$
        LANGUAGE 'plpgsql' ;
        select verify_uuid();

我遇到的问题是价值部分。目前的设置,我收到错误:

  

QUERY:INSERT INTO temp2值   '(1,6f32e71c-9aad-48a9-a72c-bdec2f4548a2)':UUID

报价位置错误,我不知道如何将它们放在正确的位置。

2 个答案:

答案 0 :(得分:1)

所以最后,我选择了以下内容。它让我到了这一点:

EXECUTE 'INSERT INTO temp2 values ('||uu.id||','''|| uu.some_value||''')';

答案 1 :(得分:0)

execute
    'insert into temp2 (other_value) values ($1)'
    using uu.the_column::uuid;

http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN