Question

Je suis en train d'utiliser un RefCursor comme paramètre d'entrée sur une procédure stockée Oracle. L'idée est de sélectionner un groupe d'enregistrements, les introduire dans la procédure stockée, puis le SP en boucle sur la RefCursor d'entrée, faire quelques opérations à ses dossiers. Non, je ne peux pas sélectionner les enregistrements à l'intérieur du SP et ainsi éviter d'avoir à utiliser le RefCursor comme un type d'entrée.

Je l'ai trouvé un exemple sur la façon de le faire sur (ce serait ici le lien, mais il semble que je ne peux pas les utiliser encore) la documentation d'Oracle, mais il utilise un simple SELECT pour peupler l'entrée RefCursor; et est là le hic. Je dois le remplir à partir du code

Vous voyez, dans le code je 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:

  

"non valide Liaison paramètre"

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

Toutes les idées?

Était-ce utile?

La solution

Je suis aussi 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 répondu kinly comme ceci:

» Il n'y a aucun problème pour me envoyer un email; Cependant, 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).

Un couple de problèmes qui sont qu'un refcursor fait référence à la mémoire appartenant à Oracle sur le serveur Oracle et n'a pas de concept d'éléments client comme un DataTable ou une liste de .NET, etc.

Avez-vous d'autres options disponibles autres que d'utiliser 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.

Autres conseils

De la mémoire, n'est pas là une classe OracleCursor quelque part dans la bibliothèque de ODP.NET qui fonctionne?

Regardez cet échantillon pour refcursor comme entrée pL / SQL d'Oracle technet.

Le clou est que l'entrée refcursor objet doit être créé par l'oracle leur propre compte. Vous ne pouvez pas convertir une liste ou quoi que ce soit d'autre à refcursor.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top