[firebase-br] LOGs de Auditoria em Banco Externo

José Mauricio Barbisan Zottis bzottis em ig.com.br
Seg Nov 4 11:59:56 -03 2013


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.
>
>
> Em 4 de novembro de 2013 10:21, José Mauricio Barbisan Zottis <
> bzottis em ig.com.br> escreveu:
>
> > obrigado Gladison, mas aí que estou penando.
> > a estrutura é a mesma,
> > o campo da tabela no banco local é BLOB TEXT Charset win1252
> > na base externaé exatamente a mesma, e o parâmetro na procedure que faz a
> > inserção é a mesma.
> > Estrutura da Base Local
> >
> > CREATE TABLE EVENTOS_CLIENTE (
> >     COD_EVENTO_CLI  PK NOT NULL /* PK = INTEGER NOT NULL */,
> >     DATA_CAD        DATAS /* DATAS = DATE */,
> >     HORA_CAD        TEMPO /* TEMPO = TIME */,
> >     COD_USUARIO     PK /* PK = INTEGER NOT NULL */,
> >     COD_EVENTO      PK /* PK = INTEGER NOT NULL */,
> >     OBS             MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 240 */,
> >     COD_CLIENTE     PK /* PK = INTEGER NOT NULL */
> > );
> >
> > A estrutura da Tabela de Logs:
> > CREATE TABLE AUDITORIA_DETALHES (
> >     CODIGO          PK /* PK = INTEGER NOT NULL */,
> >     COD_AUDITORIA   PK /* PK = INTEGER NOT NULL */,
> >     COLUNA          VARCHAR_35 /* VARCHAR_35 = VARCHAR(35) */,
> >     VLR_ANTIGO      VARCHAR(255),
> >     VLR_NOVO        VARCHAR(255),
> >     VLR_NOVO_OBS    MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 240 */,
> >     VLR_ANTIGO_OBS  MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 240 */
> > );
> >
> > A Procedure de inserção:
> > CREATE OR ALTER PROCEDURE SP_AUDITORIA_DETALHES (
> >     VAR_CODIGO_AUD INTEGER,
> >     COLUNA VARCHAR(45),
> >     VLR_ANTIGO VARCHAR(255),
> >     VLR_NOVO VARCHAR(255),
> >     VLR_OBS_ANTIGO BLOB SUB_TYPE 1 SEGMENT SIZE 240,
> >     VLR_OBS_NOVO BLOB SUB_TYPE 1 SEGMENT SIZE 240)
> > AS
> > DECLARE VARIABLE BANCO VARCHAR(150);
> > DECLARE VARIABLE USUARIO_BD VARCHAR(50);
> > DECLARE VARIABLE SENHA_BD VARCHAR(50);
> > DECLARE VARIABLE SQL VARCHAR(1000);
> > begin
> >   BANCO      = 'externo';/*'192.168.1.10:D:\BD\EXTERNO.FDB';*/
> >   USUARIO_BD = 'SYSDBA';
> >   SENHA_BD   = 'masterkey';
> >
> > if (:VLR_ANTIGO is null )     then VLR_ANTIGO     = '';
> > if (:VLR_NOVO is null )       then VLR_NOVO       = '';
> > if (:VLR_OBS_ANTIGO is null ) then VLR_OBS_ANTIGO = '';
> > if (:VLR_OBS_NOVO is null )   then VLR_OBS_NOVO   = '';
> >
> >   SQL =  'INSERT INTO auditoria_detalhes(COD_AUDITORIA, COLUNA,
> VLR_ANTIGO,
> > VLR_NOVO, VLR_NOVO_OBS, VLR_ANTIGO_OBS) VALUES ('
> >                                          ||:VAR_CODIGO_AUD ||','''||
> > :COLUNA ||''','''|| :VLR_ANTIGO ||''','''|| :VLR_NOVO ||''','''||
> > :VLR_OBS_NOVO||''','''|| :VLR_OBS_ANTIGO ||''');';
> >
> >
> >   EXECUTE STATEMENT (:SQL)
> >          ON EXTERNAL :BANCO
> >          AS USER :USUARIO_BD PASSWORD :SENHA_BD
> >    WITH COMMON TRANSACTION;
> > end^
> >
> >
> >
> >
> > Em 4 de novembro de 2013 10:12, Gladiston Santana
> > <gladiston em vidy.com.br>escreveu:
> >
> > > Se vc esta tentando levar um blob para outra tabela que tambem seja
> blob,
> > > beleza, mas se for um varchar, voce tem que tratar a informação antes
> de
> > > depositar a informação lá na tabela de destino, como por exemplo,
> > conferir
> > > se o tamanho é adequado. Não é apenas a contagem de caracteres, mas
> > > observar se o collate e o charset são os mesmos dos dois lados. Também
> > > tomar cuidado com certos caracteres como \ (escape) e ' ",  as
> variaveis
> > > sempre devem estar sanitizadas para evitar erros de interpretação do
> > > compilador.
> > >
> > >
> > > Em 4 de novembro de 2013 09:53, José Mauricio Barbisan Zottis <
> > > bzottis em ig.com.br> escreveu:
> > >
> > > > Pessoal, estou tentando fazer os logs de alterações(Auditoria) em uma
> > > base
> > > > externa.
> > > >
> > > > consegui fazer com todos os tipos de campo sem problemas, mas os
> campos
> > > > Blob Memo ta me tirando os poucos cabelos que me restam.
> > > >
> > > > se o memo tem poucas linhas ele faz normalmente, se for um pouco
> maior
> > da
> > > > erro de Truncation.
> > > >
> > > > a estrutura das tabelas são iguais, a SP que faz a inserção no outro
> > > banco
> > > > recebe os parâmetros também com a mesma estrutura.
> > > >
> > > > não sei mais o que fazer.
> > > > ______________________________________________
> > > > 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
> > >
> > ______________________________________________
> > 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