Bonjour,
Je suis en train de faire un script sql pour dupliquer une base via un DBlink en utilisant
en gros voilà à quoi ça ressemble :
Code : Sélectionner tout - Visualiser dans une fenêtre à part create table *** as select * from tablesource@dblink
SYNOPTIS = schema de destination.
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;
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 :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE SYNOPTIS.TRONC as select * from SYNOPTIS2.TRONC@SYNCHRO2
Une idée ?Error report:
ORA-00900: instruction SQL non valide
ORA-06512: ligne 11
00900. 00000 - "invalid SQL statement"
*Cause:
*Action:
Partager