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;
ENDComo usar
SQL='update clientes set status='||
STR_QUOTED('A')||
' where uf='||STR_QUOTED('SP');
execute statement :SQL;Conclusão
Agora você tem um QuotedStr em psql.