Bonjour,

Je suis en train de faire un script sql pour dupliquer une base via un DBlink en utilisant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
create table *** as select * from tablesource@dblink
en gros voilà à quoi ça ressemble :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE
TYPE LISTE_TABLES IS TABLE OF NVARCHAR2(30);
ma_liste_table LISTE_TABLES;
requete NVARCHAR2(255);
begin
select TABLE_NAME BULK COLLECT INTO ma_liste_table from ALL_ALL_TABLES@SYNCHRO2 where OWNER='SYNOPTIS2';
For i IN ma_liste_table.first..ma_liste_table.last Loop
     IF ma_liste_table(i)= 'TRONC' then
      dbms_output.put_line('CREATE TABLE SYNOPTIS.'||ma_liste_table(i)||' as select * from SYNOPTIS2.'||ma_liste_table(i)||'@SYNCHRO2');
      execute immediate 'CREATE TABLE SYNOPTIS.'||ma_liste_table(i)||' as select * from SYNOPTIS2.'||ma_liste_table(i)||'@SYNCHRO2';
     end if;
End loop;
end;
SYNOPTIS = schema de destination.
SYNOPTIS2 = schéma source
SYNCHRO2 = dblink vers la database source
le tout est excécuté sur la base de destination.

la ligne retournée par dbms_output.put_line est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE TABLE SYNOPTIS.TRONC as select * from SYNOPTIS2.TRONC@SYNCHRO2
cette commande s'exécute parfaitement sous SQLplus. Mais dés que j'intègre ça dans un execute immediate et une boucle la requête ne passe plus :
Error report:
ORA-00900: instruction SQL non valide
ORA-06512: ligne 11
00900. 00000 - "invalid SQL statement"
*Cause:
*Action:
Une idée ?