2010-01-13 6 views
0

I ont une signature de procédure Pl/Sql qui ressemblent à ceC# et PLSQL curseur

foo(param1 IN type1, param2 IN type1, c OUT REF CURSOR).

Cette procédure stockée est appelée en C#. Dans le code C#, je remplis un DataTable avec ce curseur. Je voudrais savoir quand le curseur sera fermé.

Dois-je le fermer dans le SP? Dans le code? Ou est-ce que l'objet OracleRefCursor le fermera quand j'appellerai la méthode Dispose (parce qu'elle n'a pas de méthode Close)?

Merci

Edit: Voici quelques exemples de code que je utilise

stored proc:

create or replace procedure foo1(param1 IN type1, param2 IN type1, c OUT REF CURSOR) 
IS 
BEGIN 
    OPEN c 
    FOR 
     SELECT x 
     FROM table; 
END; 

create or replace procedure foo2(param3 IN type1, param4 IN type1, c OUT REF CURSOR) 
IS 
    temp type1 := param3; 
    x type1; 
BEGIN 
    LOOP temp < param4 
     foo1(temp, param4, c); 
     FETCH c INTO x; 
     temp := temp +1; 
    END LOOP; 
END; 

Merci

+0

avez-vous un exemple de travail avec C# et plsql cursor? parce que j'ai posté une question récemment personne n'a répondu – tga

+0

J'ai ajouté du code – ALOToverflow

+0

Pouvez-vous me montrer un échantillon C#? Parce que j'ai un problème avec la lecture de Cursor avec DataReader. Il existe de nombreux exemples avec DataAdapter mais aucun avec DataReader. Merci d'avance. – tga

Répondre

0

Vous ne devriez pas près curseur, car aucune donnée ne être retourné, vous devez le fermer dans votre code C#.

+0

Mais comment? J'utilise un objet OracleRefCursor pour stocker le curseur mais il n'existe pas de méthode de fermeture sur cet objet. Seulement un dipose(). – ALOToverflow

+0

voir mon sujet il y a quelques explorations à ce sujet http://stackoverflow.com/questions/2037000/c-and-postgresql – tga