2011-11-15 5 views
0

J'ai utilisé Visual Studio 2010 pour créer des tests unitaires de base de données pour certaines procédures stockées qui retournent plusieurs lignes. Dans SQL Server c'était facile, je viens d'exécuter la procédure stockée (EXEC MyProcedure 9999) et les lignes ont été retournées automatiquement afin que je puisse utiliser le concepteur de test pour vérifier le jeu de résultats.Tests unitaires Procédure stockée Oracle avec Visual Studio 2010

Maintenant j'essaye d'écrire les mêmes tests pour Oracle; cependant, la procédure stockée Oracle utilise un paramètre de sortie de curseur pour renvoyer les résultats. Par exemple, la signature des procédures stockées ressemble:

PROCEDURE MyProcedure 
(
    v_ItemId IN NUMBER, 
    io_cursor IN OUT t_cursor 
) AS... 

Parce qu'il faut un curseur comme paramètre, je dois déclarer dans mon test. En regardant d'autres questions posées à ce sujet, j'ai pu créer ceci:

DECLARE 
    refcsr SYS_REFCURSOR; 
BEGIN 
    MyProcedure (9999, refcsr); 
END; 

Je sais que le refcsr contient mes résultats, mais ma question est comment puis-je faire le contenu du curseur visible un jeu de résultats à Cadre de test Visual Studio?

Répondre

0

Quelque chose comme ce

variable x refcursor 
exec MyProcedure(9999, :x) 
print x 
+0

Son probablement mon manque total de connaissances avec Oracle, mais je l'ai essayé et je ne peux jamais obtenir Oracle d'accepter la syntaxe. Prenez la première ligne par exemple, 'variable x refcursor' me donne 'ORA-00900: instruction SQL invalide'. – user171197

+0

Ce qui précède doit être exécuté dans sqlplus. J'ai supposé que vous vouliez l'exécuter comme un test unitaire. Les scripts SQL sont les mieux adaptés à cette tâche. – steve

+0

J'utilise le framework de test unitaire dans Visual Studio qui se connecte à la base de données via ODP.NET. – user171197

Questions connexes