Bonjour,
j'ai une procédure stockée qui doit me renvoyer un ref cursor sur le résultat d'une requête dynamique, qui peut être très longue.
Pour constituer ma requête une variable VARCHAR2 ne convient pas, j'ai besoin de davantage de capacité.
J'ai donc trouvé la solution des VARCHAR2S, dans lesquels je stocke ma requête splitée.
Elle est ensuite reconstituée grâce à un DBMS_SQL.PARSE.
Le souci, c'est qu'à partir de là, je n'arrive pas à faire le lien avec le ref cursor que je doit envoyer ! Le DBMS_SQL.PARSE renvoit en effet un pointeur de type INTEGER...
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 FUNCTION search (... ) RETURN pkg_search.result_refcur (type REF CURSOR) IS rqt VARCHAR2(256); stmt DBMS_SQL.VARCHAR2S; indx BINARY_INTEGER; intrefcur INTEGER; BEGIN rqt := 'SELECT ....' stmt(1) := rqt; indx := indx+1; intrefcur := DBMS_SQL.OPEN_CURSOR ; DBMS_SQL.PARSE (intrefcur, stmt, stmt.FIRST, stmt.LAST, FALSE, DBMS_SQL.NATIVE); ??? END;
J'ai beaucoup cherché sur le net, en vain... Si vous voyez éventuellement d'autres solution pour gérer les requêtes longues et renvoyer un REF CURSOR...?
Merci d'avance pour votre aide !
Partager