Bonjour,

J'ai 1 classique besoin de transfert de données entre 2 bases, les tables source & cible se ressemblent, mais la normalisation est passée par là
source:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE AFFECTATION (
   AFF_ANNEE INTEGER NOT NULL,
   ATE_REF VARCHAR(10) NOT NULL,
   OUV_NUMSS NUMSS NOT NULL
);
Cible:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE TABLE AFFECTATION (
   AFF_ANNEE INTEGER NOT NULL,
   OUV_CLE INTEGER NOT NULL,
   ATE_CLE INTEGER NOT NULL
);
Je tente ce code (largement inspiré d'échanges sur le forum en mode singe voit-singe fait):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SET TERM !;
EXECUTE BLOCK
AS
DECLARE VARIABLE C1 int ;
DECLARE VARIABLE C2 varchar(10);
DECLARE VARIABLE C3 char(13);
DECLARE VARIABLE C4 int ;
DECLARE VARIABLE C5 int ;
BEGIN
FOR EXECUTE STATEMENT 'SELECT AFF_ANNEE,ATE_REF,OUV_NUMSS FROM AFFECTATION'
       ON EXTERNAL 'localhost/3050:C:\FB2.17\GESTCAT2-1.FDB'
      AS USER 'SYSDBA' PASSWORD 'masterkey'
      INTO :C1,:C2,:C3;
DO
 select OUV_CLE from OUVRIER where OUV_NUMSS=:C3 INTO :C4
 select ATE_CLE FROM ATELIER WHERE ATE_REF_INTERNE=:C2 INTO :C5
 INSERT INTO AFFECTATION VALUES(:c1,:c4,:c5);
END!
SET TERM ;!
et sous Flamerobin, ça tousse
Error: *** IBPP::SQLException ***
Context: Statement:repare(
EXECUTE BLOCK
AS
DECLARE VARIABLE C1 int ;
DECLARE VARIABLE C2 varchar(10);
DECLARE VARIABLE C3 char(13);
DECLARE VARIABLE C4 int ;
DECLARE VARIABLE C5 int ;
BEGIN
FOR EXECUTE STATEMENT 'SELECT AFF_ANNEE,ATE_REF,OUV_NUMSS FROM AFFECTATION'
ON EXTERNAL 'localhost/3050:C:\FB2.17\GESTCAT2-1.FDB'
AS USER 'SYSDBA' PASSWORD 'masterkey'
INTO :C1,:C2,:C3;
DO
select OUV_CLE from OUVRIER where OUV_NUMSS=:C3 INTO :C4
select ATE_CLE FROM ATELIER WHERE ATE_REF_INTERNE=:C2 INTO :C5
INSERT INTO AFFECTATION VALUES(:c1,:c4,:c5);
END )
Message: isc_dsql_prepare failed

SQL Message : -104
Invalid token

Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 11, column 8
ON
La ligne 11 étant le ON EXTERNAL ...

Une idée? Est-ce lié à la version 2.1 utilisée?

Merci de vos retours.