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.