curseur invalid ora-01001
Salut,
Voici mon code :
Code:
1 2 3 4 5
| create or replace package retour as
TYPE MON_TYPE IS TABLE OF VARCHAR2(1000) INDEX BY BINARY_INTEGER ;
table_rec MON_TYPE;
function retourquery (tab varchar2) return MON_TYPE;
end retour; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| create or replace package body retour as
TYPE curs IS REF CURSOR;
function retourquery(tab varchar2) RETURN MON_TYPE IS
c curs;
tab_rec MON_TYPE;
query varchar2(5000) := 'select libelle from '||tab;
Begin
OPEN C FOR query;
FETCH C BULK COLLECT Into tab_rec;
CLOSE C;
RETURN tab_rec;
End retourquery;
end retour; |
Et lorsque j'appelle la fonction voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11
| set serveroutput on
declare
tablo retour.MON_TYPE;
begin
dbms_output.ENABLE(900000);
tablo := retour.retourquery('udm');
for i in 1 .. tablo.count
loop
dbms_output.put_line(i||' : '||tablo(i));
end loop;
end; |
J'ai un message ora-01001 curseur invalide, par contre lorsque je ne passe pas de parametre à ma fonction et que je mets en 'dur' (open c for select libelle from udm) ça marche.
Donc comment je peux faire pour faire passer le nom d'une table (ou autre : par exemple toute une requete) en parametre pour que mon curseur au niveau de ma fonction marche.
Merci d'avance pour les réponses.
Couse1