[firebase-br] LOGs de Auditoria em Banco Externo
José Mauricio Barbisan Zottis
bzottis em ig.com.br
Seg Nov 4 10:21:21 -03 2013
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
>
Mais detalhes sobre a lista de discussão lista