Salut,
Je suis débutant pl/sql et j'ai un probleme à résoudre: Sur une instance j'ai n schémas comportants les memes tables ayant toutes la meme structure.
Le but de ma procédure est de récupérer la valeur d'un champs donné sur l'ensemble de ces schémas.
j'ai commencé à ecrire la procédure suivante qui prend en paramètre le nom de la table et un champs:
je bloque en faite pour faire executer la requete construite dynamiquement et obtenir le résultat à partir du nom du schéma, de la table et du champs de cette table. Dois ouvrir un second curseur auquel je passe le résultat du premier?
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 create or replace PROCEDURE GET_FIELD_VALUE( TAB_NAME IN VARCHAR2, TAB_FIELD IN VARCHAR2) IS username dba_users.username%TYPE; table_name VARCHAR2(50):='MA_TABLE'; field_value VARCHAR(50):='MON_CHAMPS'; sSqlStmt VARCHAR2(500):=''; /*recupere les bases courantes à partir de dba_users*/ CURSOR C1 IS SELECT DISTINCT(USERNAME) FROM dba_users ORDER BY USERNAME; BEGIN OPEN C1; LOOP FETCH C1 INTO username; EXIT WHEN C1%NOTFOUND; sSqlStmt:= 'SELECT'||' '|| field_value||' '|| 'FROM'||' '|| username||'.'||table_name||';'; DBMS_OUTPUT.PUT_LINE (sSqlStmt); --DBMS_OUTPUT.PUT_LINE (username); END LOOP; CLOSE C1; END;
merci pour vos conseils,
Partager