Colocando aspas simples numa string que talvez já tenha aspas também

A linguagem pascal tem uma função muito util para construção de queries chamada QuotedStr, esta função coloca uma string entre aspas, por exemplo digamos que uma variavel onde nome=Sant’Ana, e agora você precisa usar ela dentro de uma querie

SQL.Text:='select * from clientes where nome='+QuotedStr(nome);

O QuotedStr notará as aspas simples em ‘nome’ e a duplicará para que o código SQL funcione ficando assim Sant”Ana. Dentro da linguagem procedural(psql daqui em diante) também precisamos disso em situações variadas, por exemplo, quando precisamos usar execute statement com comandos SQL puros e você não sabe se alguns deles terão aspas simples em seu interior. Por essa razão criei a função STR_QUOTED:

create or alter function STR_QUOTED (
    AVALUE varchar(4096),
    AUSE_IN_SQL boolean = false)
returns varchar(4096)
as
declare variable Q varchar(1);
BEGIN
  /* essa procedure retorna um texto (4096 bytes) entre aspas simplesmente e opcionalmente
   com aspas simples dentro do texto transformando-se em aspas simples duplas.
   p='ola mundo'
   ret=STR_QUOTED(:p, false);   // resultado: 'ola mundo' com aspas simples abrindo e fechando o texto
   se o segundo parametro for 'true' ele também trocará aspas simples que houverem dentro
   do texto para aspas simples duplas.
   Util para uso com banco de dados e instruções execute statement
   by gladiston.santana[em]gmail.com
  */
  q='''';
  if (:AUSE_IN_SQL) then
  begin
    if (position (:q in :AVALUE)>0) then
    begin
      --troca aspas simples por duplas
      AVALUE = replace (:AVALUE, :q, :q||:q);
    end
  end
  -- Retorna uma string entre aspas
  RETURN :q||:AVALUE||:q;
END

Como usar

SQL='update clientes set status='||
  STR_QUOTED('A')||
  ' where uf='||STR_QUOTED('SP');
execute statement :SQL;

Conclusion

Agora você tem um QuotedStr em psql.