1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| create or replace
PROCEDURE archivage ( sou IN VARCHAR2, destination IN VARCHAR2)
IS
source_cursor INTEGER;
destination_cursor INTEGER ;
ignorer INTEGER;
i integer;
BEGIN
/* - Préparer un curseur pour sélectionner à partir de la bd_source: */
source_cursor := dbms_sql.open_cursor;
DBMS_SQL.PARSE (source_cursor,
'SELECT table_name FROM dba_tables' || sou,DBMS_SQL.NATIVE);
/* soit j'utilise cette req
SELECT object_name FROM dba_objects WHERE owner = 'SCOTT' AND object_type = 'TABLE'*/
DBMS_SQL.DEFINE_COLUMN (source_cursor); --PLS-00306: wrong number or types of arguments in call to DEFINE_COLUMN
ignorer := DBMS_SQL.EXECUTE = (source_cursor);
/* - Préparer un curseur à insérer dans la bd de destination: */
destination_cursor := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE (destination_cursor,
'INSERT INTO' || destination@link,DBMS_SQL.NATIVE);
/* - Récupère une ligne de la table source et l'insérer dans la table de destination: */
loop
if DBMS_SQL.FETCH_ROWS (source_cursor)> 0 then
-- Obtenir des valeurs de colonne de la ligne
DBMS_SQL.COLUMN_VALUE (source_cursor);
DBMS_SQL.BIND_VARIABLE (destination_cursor);
ignorer := DBMS_SQL.EXECUTE = (destination_cursor);
ELSE
EXIT;
End If;
END LOOP;
/*Close Cursor */
/*-fermer les curseurs: */
COMMIT;
DBMS_SQL.CLOSE_CURSOR (source_cursor);
DBMS_SQL.CLOSE_CURSOR (destination_cursor);
EXCEPTION
WHEN OTHERS THEN
if
DBMS_SQL.IS_OPEN (source_cursor)then
DBMS_SQL.CLOSE_CURSOR (source_cursor);
End If;
if DBMS_SQL.IS_OPEN (destination_cursor) then
DBMS_SQL.CLOSE_CURSOR (destination_cursor);
End If;
RAISE;
END; |
Partager