voila ma procédure stockée qui contient deux paramètres (bd source , bd archive)
je veux faire un transfert de données de la bd source vers la bd archive à travers un lien entres les 2 BD

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
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;
j'ai les erreurs suivants :

PLS-00306: Numero ou type d'arguments erronés dans l'appel a DEFINE_COLUMN


PLS-00306: Numero ou type d'arguments erronés dans l'appel a COLUMN_VALUE
PLS-00306: Numero ou type d'arguments erronés dans l'appel a EXECUTE
merci