Article View: borland.public.interbase.replication
Article #583Re: errors with store procedure replication
From: Steve Ball
Date: Mon, 10 Dec 2001 12:34
Date: Mon, 10 Dec 2001 12:34
306 lines
8611 bytes
8611 bytes
Ailton, you need to declare the values in the stored procedure in a set order. Fields, Key Fields, The Type It looks like P_CODIGO is your key field, try ALTER PROCEDURE SPFORTALEZAREPL ( P_CIDADE VARCHAR(40), P_ENDERECO VARCHAR(100), P_NOME VARCHAR(100), P_CODIGO INTEGER, THE_TYPE CHAR(1) ) RETURNS.................... Select the P_CODIGO as the key field in the replicator scheme and add all the others over as you would normally. Steve "Ailton Queiroz" <ailtonqueiroz@yahoo.com.br> wrote in message news:3c0e4fd3$1_1@dnews... > > Hi, > > I'm doing replication with stores procedures and in the > replication is occur some mistakes. I will like know, which mistake is this? What's happening? > This is the store procedure and the replication structure executed in the Interbase Replication Server. > > Thank you! > > DATABASE: > > SET SQL DIALECT 1; > > /* CREATE DATABASE 'C:\Exemplo\bi_direcional\FORTALEZA_DB.GDB' PAGE_SIZE 2048 > > DEFAULT CHARACTER SET */ > > /* Table: CLIENTE, Owner: SYSDBA */ > > CREATE TABLE CLIENTE > ( > CODIGO_CLIENTE INTEGER NOT NULL, > NOME_CLIENTE VARCHAR(100) NOT NULL, > ENDERECO_CLIENTE VARCHAR(100), > CIDADE_CLIENTE VARCHAR(40), > PRIMARY KEY (CODIGO_CLIENTE) > ); > > /* Table: CLIENTE_CONTA, Owner: SYSDBA */ > > CREATE TABLE CLIENTE_CONTA > ( > CODIGO_CLIENTE INTEGER NOT NULL, > NUMERO_CONTA INTEGER NOT NULL, > DATA_CRIACAO TIMESTAMP NOT NULL, > PRIMARY KEY (CODIGO_CLIENTE, NUMERO_CONTA) > ); > > /* Table: CONTA, Owner: SYSDBA */ > > CREATE TABLE CONTA > ( > NUMERO_CONTA INTEGER NOT NULL, > SALDO_CONTA DOUBLE PRECISION NOT NULL, > PRIMARY KEY (NUMERO_CONTA) > ); > > /* Table: MANUAL_LOG, Owner: SYSDBA */ > > CREATE TABLE MANUAL_LOG > ( > REPLNO INTEGER NOT NULL, > PUBDBNO INTEGER NOT NULL, > SUBDBNO INTEGER NOT NULL, > SEQNO INTEGER NOT NULL, > RELATIONNO INTEGER NOT NULL, > REPTYPE CHAR(1), > OLDKEY VARCHAR(256), > NEWKEY VARCHAR(256), > FORCECOUNT INTEGER DEFAULT 0, > ERROR_CODE INTEGER, > ERROR_MSG VARCHAR(256), > PRIMARY KEY (REPLNO, PUBDBNO, SUBDBNO, SEQNO) > ); > > /* Table: REPL_LOG, Owner: SYSDBA */ > > CREATE TABLE REPL_LOG > ( > REPLNO INTEGER NOT NULL, > PUBDBNO INTEGER NOT NULL, > SUBDBNO INTEGER NOT NULL, > SEQNO INTEGER NOT NULL, > RELATIONNO INTEGER NOT NULL, > REPTYPE CHAR(1), > OLDKEY VARCHAR(256), > NEWKEY VARCHAR(256), > FORCECOUNT INTEGER DEFAULT 0, > PRIMARY KEY (REPLNO, PUBDBNO, SUBDBNO, SEQNO) > ); > > /* Table: REPL_SEPARATOR, Owner: SYSDBA */ > > CREATE TABLE REPL_SEPARATOR > ( > REPLNO INTEGER NOT NULL, > PUBDBNO INTEGER NOT NULL, > SUBDBNO INTEGER NOT NULL, > RELATIONNO INTEGER NOT NULL, > RELATIONNAME VARCHAR(100) NOT NULL, > SEP CHAR(1), > PRIMARY KEY (REPLNO, PUBDBNO, SUBDBNO, RELATIONNO) > ); > > /* Index definitions for all user tables */ > > CREATE INDEX ITESTE ON CLIENTE(CODIGO_CLIENTE); > CREATE INDEX I_REPL_LOG ON REPL_LOG(SEQNO); > ALTER TABLE CLIENTE_CONTA ADD FOREIGN KEY (CODIGO_CLIENTE) REFERENCES CLIENTE (CODIGO_CLIENTE) ON UPDATE CASCADE ON DELETE CASCADE; > ALTER TABLE CLIENTE_CONTA ADD FOREIGN KEY (NUMERO_CONTA) REFERENCES CONTA (NUMERO_CONTA) ON UPDATE CASCADE ON DELETE CASCADE; > > CREATE GENERATOR REPL_GENERATOR; > COMMIT WORK; > SET AUTODDL OFF; > SET TERM ^ ; > > /* Stored procedures */ > > CREATE PROCEDURE SPFORTALEZAREPL > ( > P_CIDADE VARCHAR(40), > P_CODIGO INTEGER, > P_ENDERECO VARCHAR(100), > P_NOME VARCHAR(100), > THE_TYPE CHAR(1) > ) > RETURNS > ( > RESULT INTEGER > ) > AS > BEGIN EXIT; END ^ > > > ALTER PROCEDURE SPFORTALEZAREPL > ( > P_CIDADE VARCHAR(40), > P_CODIGO INTEGER, > P_ENDERECO VARCHAR(100), > P_NOME VARCHAR(100), > THE_TYPE CHAR(1) > ) > RETURNS > ( > RESULT INTEGER > ) > AS > declare variable COUNTER INTEGER; > BEGIN > RESULT=0; > /*****************/ > /* error check */ > /*****************/ > select count(*) from cliente where codigo_cliente = :p_codigo > into counter; > if (the_TYPE = 'I' and counter > 0) then > begin > RESULT = 1; > exit; > end > if (the_TYPE = 'U' and counter = 0) then > begin > RESULT = 1; > exit; > end > if (the_TYPE = 'D' and counter = 0) then > begin > RESULT = 1; > exit; > end > /****************************************/ > /* do the insert */ > /****************************************/ > if (the_TYPE = 'I') then > begin > insert into cliente > (codigo_cliente,nome_cliente) > VALUES > (:p_codigo,:p_nome); > exit; > end > /****************************************/ > /* Do Update */ > /****************************************/ > if (the_TYPE = 'U') then > begin > update cliente set > cidade_cliente = :p_cidade, > codigo_cliente = :p_codigo, > endereco_cliente = :p_endereco, > nome_cliente = :p_nome > where codigo_cliente = :p_codigo; > exit; > end > /****************************************/ > /* Do delete */ > /****************************************/ > if (the_TYPE = 'D') then > begin > delete from cliente where codigo_cliente = :p_codigo; > exit; > end > END > ^ > > SET TERM ; ^ > COMMIT WORK; > SET AUTODDL ON; > SET TERM ^ ; > > > /* Triggers only will work for SQL triggers */ > > CREATE TRIGGER REPL_GEN_SEQNO FOR REPL_LOG > ACTIVE BEFORE INSERT POSITION 0 > AS BEGIN NEW.SEQNO = GEN_ID(REPL_GENERATOR,1);POST_EVENT 'REPLNOW';END > ^ > > COMMIT WORK ^ > SET TERM ;^ > > /* Grant Roles for this database */ > > > /* Grant permissions for this database */ > > GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON CLIENTE TO REPL; > GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON CLIENTE_CONTA TO REPL; > GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON CONTA TO REPL; > GRANT INSERT, REFERENCES ON REPL_LOG TO PUBLIC; > GRANT SELECT, REFERENCES ON REPL_SEPARATOR TO PUBLIC; > GRANT EXECUTE ON PROCEDURE SPFORTALEZAREPL TO REPL; > > > > REPLICATION: > > Configuration details loaded > Connected to Source: C:\Exemplo\bi_direcional\FORTALEZA_DB.GDB Char Set: NONE > Connected to Target: C:\Exemplo\bi_direcional\RECIFE_DB.GDB Char Set: NONE > STATISTICS FOR SOURCE DATABASE: > 0 Hours, 0 Minutes, 0 Seconds > Inserts : 0 > Updates : 0 > Deletes : 0 > Conflicts: 0 > Errors : 0 > Disconnect Source Database > Connected to Source: C:\Exemplo\bi_direcional\RECIFE_DB.GDB Char Set: NONE > Disconnect Target Database > Connected to Target: C:\Exemplo\bi_direcional\FORTALEZA_DB.GDB Char Set: NONE > Update 2 > SELECT CIDADE_CLIENTE,ENDERECO_CLIENTE,NOME_CLIENTE,CODIGO_CLIENTE FROM CLIENTE WHERE CODIGO_CLIENTE = ? > EXECUTE PROCEDURE SPFORTALEZAREPL (? , ? , ? , ? , 'I') > EXECUTE PROCEDURE SPFORTALEZAREPL (? , ? , ? , ? , 'U') > EXECUTE PROCEDURE SPFORTALEZAREPL (NULL , NULL , NULL , ? , 'D') > > PLAN (CLIENTE INDEX (RDB$PRIMARY1)) > ErrorNo: 44 - Dynamic SQL Error > -SQL error code = -303 > -conversion error from string "R E S Jr, 20" > Incompatible column/host variable data type > STATISTICS FOR SOURCE DATABASE: > 0 Hours, 0 Minutes, 0 Seconds > Inserts : 0 > Updates : 0 > Deletes : 0 > Conflicts: 0 > Errors : 1 > Disconnect Source Database > Disconnect Target Database > TOTAL STATISTICS: > 0 Hours, 0 Minutes, 0 Seconds > Inserts : 0 > Updates : 0 > Deletes : 0 > Conflicts: 0 > Errors : 1 >
Technical Details
Message-ID:
<3c14abdc_1@dnews>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!newshub2.rdc1.sfba.home.com!news.home.com!newsfeed.mesh.ad.jp!osa.uu.net!newsfeeds.ihug.co.nz!ihug.co.nz!dnewsReferences:
<3c0e4fd3$1_1@dnews>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: f89d7,8fadc889eb7a612b X-Google-Attributes: gidf89d7,public X-Google-ArrivalTime: 2001-12-10 04:36:36 PST From: "Steve Ball" <Steve@ClubRunner.co.uk> Newsgroups: borland.public.interbase.replication References: <3c0e4fd3$1_1@dnews> Subject: Re: errors with store procedure replication Date: Mon, 10 Dec 2001 12:34:53 -0000 Lines: 308 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 NNTP-Posting-Host: 195.173.39.197 Message-ID: <3c14abdc_1@dnews> X-Trace: dnews 1007987676 195.173.39.197 (10 Dec 2001 04:34:36 -0800) Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!newshub2.rdc1.sfba.home.com!news.home.com!newsfeed.mesh.ad.jp!osa.uu.net!newsfeeds.ihug.co.nz!ihug.co.nz!dnews