Bonjour,

Je désirerais faire une boucle sur un curseur, mais où le schéma est paramétrable, du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
DECLARE
    utilisateur     varchar2(100);
BEGIN
    for c in (SELECT * from utilisateur.table1) loop
        null;
    end loop
END;
Bien évidemment ca ne marche pas, alors j'ai pensé à faire une boucle du genre fetch :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DECLARE
    v varchar2(100);
    type curseur is ref cursor;
    c curseur;
BEGIN
    open c for 'SELECT champ1 FROM ' || utilisateur ||'.table1;
        fetch c into v;
        exit when c%notfound;
        loop
            null;
        end loop;
    close c;
END;
Mais là le problème c'est que je ne peux pas faire un 'SELECT *', mais SELECTionner un seul champ à la fois...

Apparemment le curseur paramétré avec un schéma en paramètre ne fonctionne pas non plus:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
DECLARE
    table_id      varchar2(4000);
    cursor c(owner varchar2) is select * from owner.table1;
BEGIN
    for i in c('utilisateur1') loop
      null;
    end loop;
END;
(cela donne l'erreur: "Table ou vue inexistante");

Auriez-vous des idées ?

Merci d'avance !

EDIT : Je travaille avec Oracle 10g, Windows XP