2009-06-01 8 views
2

J'essaie d'utiliser un RefCursor comme paramètre d'entrée dans une procédure stockée Oracle. L'idée est de sélectionner un groupe d'enregistrements, les nourrir dans la procédure stockée, puis le SP boucle sur l'entrée RefCursor, effectuant certaines opérations à ses enregistrements. Non, je ne peux pas sélectionner les enregistrements dans le SP et éviter ainsi d'utiliser le RefCursor comme type d'entrée.Utilisation d'un curseur ref comme type d'entrée avec ODP.NET

J'ai trouvé un exemple sur la façon de faire cela (ce serait le lien, mais il semble que je ne peux pas encore les utiliser) Documentation Oracle, mais il utilise un SELECT simple pour remplir l'entrée RefCursor; et c'est là que réside le problème: je dois le remplir de code.

Vous voyez, dans le code que j'ai ceci:

[OracleDataParameter("P_INPUT", OracleDbType.RefCursor, ParameterDirection.Input)] 
private List<MiObject> cursor; 

Et, je l'ai essayé peuplant curseur avec un List<T>, un DataTable, même un simple tableau de MyObject, et rien ne fonctionne. Quand j'essayer d'exécuter mes tests, je reçois une erreur:

"Invalid Parameter Linking"

Peut-être pas le libellé exact, comme je suis la traduction de l'espagnol, mais c'est le message

Toutes les idées?

Répondre

2

Je suis également en contact avec Mark Williams, l'auteur de l'article que j'ai essayé de créer un lien sur mon poste, et il a kinly répondu comme ceci:

" Il n'y a pas de problème pour me envoyer e-mail, mais je pense que je vais vous décevoir ma réponse sur celui-ci Malheureusement

vous ne pouvez pas faire ce que vous essayez de faire (créer un refcursor du client comme ça)

couple.. des problèmes avec cela sont qu'un refcursor se réfère à la mémoire détenue par Oracle sur le serveur et Oracle n'a pas de concept d'éléments client lik e une DataTable ou une liste .NET, etc.

Avez-vous d'autres options disponibles autres que l'utilisation d'un refcursor? "

Donc, fondamentalement, je suis foutue, et cette question est fermée. Merci pour la lecture et/ou d'essayer d'aider, vous tous.

0

De la mémoire, n'existe-t-il pas une classe OracleCursor dans la bibliothèque ODP.NET qui fonctionne?

+0

(Même si elle existe, vérifiez qu'il fait ce que vous en avez besoin. .. ma mémoire est un peu brumeuse) – jerryjvl

0

Regardez this sample pour refcursor comme entrée au pl/sql oracle de technet .

le Clou est que l'entrée objet refcursor doit être créé par Oracle themself. vous ne pouvez pas convertir une liste ou quoi que ce soit d'autre à refcursor.

Questions connexes