[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