[firebase-br] LOGs de Auditoria em Banco Externo

Gladiston Santana gladiston em vidy.com.br
Seg Nov 4 17:11:39 -03 2013


O rodrigo tá certíssimo, considere as observações dele.
Uma sugestão, na sua procedure declare a variavel sql como memo ou então os
seus memos como varchar, ficando tudo varchar ou tudo memo. Nas tabelas
continue mantendo o memo. Se assim o fizer dará certo se atentar-se que as
somas dos varchars não exploda com o tamanho delarado para a variavel sql.
Alem disso, sanitizar a concatenação para ficar livre de erros, o comando
execute statement tambem permite o uso de parametros para simplificar a
operação. Ex:
stmt='select campo1, campo2, campo3 where desc like :pdesc'
for execute statement (:stmt) (pdesc=:var) into :p1, :p2, :p3 do
begin...end;
Um exemplo com o uso no for, mas serviria tambem num statement direto.


Dessa forma voce não se preocupa em usar concatenações que poderiam
resultar em situações erraticas.


Em 4 de novembro de 2013 15:05, José Mauricio Barbisan Zottis <
bzottis em ig.com.br> escreveu:

> Oi Rodrigo, desculpe a minha ignorância, mas mesmo olhando o site que vc me
> passou fiquei boiando de como fazer
> para passar os valores como parâmetros, e realmente, uma aspas no corpo do
> blob ferra o sql de inserção, mas não entendi de como implantar.
>
> agradeço qualquer ajuda, pois realmente estou precisando resolver junto ao
> cliente.
>
> valeu
>
>
> Em 4 de novembro de 2013 13:42, José Mauricio Barbisan Zottis <
> bzottis em ig.com.br> escreveu:
>
> > mais uma vez obrigado, mas poderia ser usado direto em uma trigger do
> > tabela?
> > hoje eu estou tentando assim:
> >
> >   IF (OLD.COD_CLIENTE IS DISTINCT FROM NEW.COD_CLIENTE ) THEN
> >     EXECUTE PROCEDURE SP_AUDITORIA_DETALHES(:VAR_CODIGO, 'COD_CLIENTE' ,
> > OLD.COD_CLIENTE,  New.COD_CLIENTE ,'','');
> >
> >
> >
> >
> > Em 4 de novembro de 2013 12:07, Rodrigo Gomes da Silva <
> > rodrgomes em gmail.com> escreveu:
> >
> > Estou me referindo a parametros e não a variavel string pra colocar o
> >> insert, ai a string do insert seria fixa e vc usaria o proprio blob como
> >> parametro. Nos docs do firebird tem a sintaxe completa do execute
> >> statement
> >> e tem exemplos de como usar parametro direto
> >>
> >> www.firebirdsql.org/refdocs/langrefupd25-psql-execstat.html
> >>
> >>
> >> Em 4 de novembro de 2013 11:59, José Mauricio Barbisan Zottis <
> >> bzottis em ig.com.br> escreveu:
> >>
> >> > Obrigado, mas então como resolveria?
> >> > almentando o tamanho so Parâmetro SQL?
> >> >
> >> >
> >> >
> >> > Em 4 de novembro de 2013 10:48, Rodrigo Gomes da Silva
> >> > <rodrgomes em gmail.com>escreveu:
> >> >
> >> > > É sempre bom usar parametro para valor de campo string ou de blob
> com
> >> > > execute statement. Do jeito que vc montou qualquer aspas no texto do
> >> blob
> >> > > vai dar erro.
> >> > > No seu caso o problema nem é este mas resolveria do mesmo jeito.
> Como
> >> a
> >> > > variavel SQL esta declarada como "VARCHAR(1000)" se o insert
> somando o
> >> > > tamanho do conteudo do blob der mais que isto ele vai dar string
> >> > > truncation.
> >> > >
> >> > >
> >> >
> >> ______________________________________________
> >> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >> Para saber como gerenciar/excluir seu cadastro na lista, use:
> >> http://www.firebase.com.br/fb/artigo.php?id=1107
> >> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >>
> >
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista