[firebase-br] Colocar variáveis do tipo string entre aspas simples

Gladiston Santana gladiston em vidy.com.br
Sex Fev 20 15:40:16 -03 2015


Além do jeito que o Carlos disse você pode usar parâmetros posicionais:
http://www.firebirdsql.org/refdocs/langrefupd25-psql-execstat.html
Semelhante ao que printf do c/c++, php e tantas outras.

Funciona, mas eu uso pouco com o 'for execute statment' porque quando há
muitos IFs que formam o statement fica dificil o debug porque no final o
statement se exibido não mostrará os valores já transliterados.
Nas outras oportunidades apesar de poder usar o jeito do Carlos, prefiro
assim:
declare variable sql_text varchar(1024);
declare variable q char(1) =''''; --olha a as duas aspas simples
begin
 sql_text =
   'create USER  '||user_name||
   ' PASSWORD '||q||user_password||q||
   ' FIRSTNAME '||q||user_firstname||q||
   ' LASTNAME '||q||user_password||q||';';
  execute statement (sql_text);

Olhando assim parece confuso, mas se quebrar as linhas corretamente fica
fácil de entender e debugar, e o melhor de tudo, não fico contando aspas,
parece simples, mas é comum contar errado e sair uma aspa literal onde não
devia.


Em 20 de fevereiro de 2015 12:30, Hélio Oliveira <hpensador em gmail.com>
escreveu:

> Bom dia Colegas!
>
> Firebird 2.5.3
>
> sql_text = 'create USER ' || :USER_NOME ||
>                  ' PASSWORD ' || :USER_SENHA ||
>                 ' FIRSTNAME ' || :USER_PRIMEIRONOME ||
>                  ' LASTNAME ' || :USER_ULTIMONOME;
>
> Neste trecho de código acima as variáveis passadas por parâmetros são do
> tipo varchar e ao ser montado o comando na variavel SQL_TEXT as mesmas não
> ficam entre aspas simples ocasionando erro na execução do comando. Como
> contornar essa situação???
>
> Obs.: No Delphi temos a função QuotedStr.



Mais detalhes sobre a lista de discussão lista