Bonjour,
je tente de créer une fonction qui reçoit le nom d'une table et renvoit la liste concaténées des colonnes de la table.
Cependant le curseur ne semble pas fonctionner. Il me renvoit une liste vide.
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 CREATE OR REPLACE FUNCTION "ORA_MAP"."LISTE_COL_TABLE" ( PC$TABLE IN VARCHAR2) RETURN VARCHAR2 is CURSOR C_WI IS SELECT COLUMN_ID FROM SYS.USER_TAB_COLUMNS WHERE TABLE_NAME = PC$TABLE AND DATA_TYPE IN ('CHAR','VARCHAR2','NUMBER','DATE') ORDER BY COLUMN_ID ; CWI VARCHAR2(30); LC$SQLW VARCHAR2(500); LN$I INTEGER; begin -------------------------------------------------------------------- -- Récupération de la liste des colonnes de la table sélectionnée -- -------------------------------------------------------------------- LN$I := 1 ; LC$SQLW := ''; OPEN C_WI; LOOP FETCH C_WI INTO CWI; IF LN$I > 1 THEN LC$SQLW := LC$SQLW || ', ' ; END IF ; LC$SQLW := LC$SQLW || ''''|| CWI || '''' ; LN$I := LN$I + 1 ; EXIT WHEN C_WI%NOTFOUND; END LOOP; CLOSE C_WI; RETURN LC$SQLW; end;
Si quelqu'un a une idée.
J'ai 2 serveurs Oracle : 1 de test et 1 de prod (distant). Le but est de faire une procédure qui mette à jour les données de la table Oracle distante avec les données de la table passée en paramètre pour les lignes sélectionnées : une sorte d'Update générique.
Par exemple, un appel du type :
1 . on récupère le nom des colonnes de table 'table1'
Code : Sélectionner tout - Visualiser dans une fenêtre à part execute ora_map.transfert_table('table1','where entityid in (1,2,3)');
2 . on récupère les données de table1 qui vérifient la condition (sur le serveur local)
3 . on fait la MAJ des données de table1 sur le serveur distant. Si les enregistrements n'existent pas, il faut les créer.
Si quelqu'un a déjà fait ce type de chose.
Je penses que si j'arrive à faire fonctionner le premier point, je pourrai faire la suite.
D'avance merci pour vos réponses.
SPG40.
Partager