7
votes

Appelez la procédure stockée Oracle avec EF échec

J'ai une procédure de magasin Oracle qui prend 2 chaînes et une date dans le paramètre d'entrée et qui donnent un curseur REF sous forme de sortie:

ORA-06550: Ligne 1, colonne 8 : PLS-00306: wrong number or types of arguments in call to 'MYPROSTO'
ORA-06550: Ligne 1, colonne 8 : PL/SQL: Statement ignored


3 commentaires

Est ok que pdate est mappé à un Varchar2?


Qu'est-ce que tu veux dire? Suggérez-vous que j'essaie de passer un varchar au lieu d'une date dans ma procédure stockée?


Avez-vous essayé de regarder docs.oracle.com /cd/e51173_01/win.122/e17732/... ? Essayez également de changer varchar2 à varchar2 dans le type de données native (juste après le manuel ici, c'est Oracle, vous ne savez jamais).


4 Réponses :


3
votes

Il semble y avoir plusieurs problèmes:

  • Envoi d'un varchar (2) dans un champ de date
  • Nom d'un paramètre "PTY" VERSUS "PTYPE"
  • Le nom d'un paramètre "Ppl" Versus "Pplant"
  • Le nom d'un paramètre "pplt" versus "ppl"

2 commentaires

C'était une erreur dans mon processus d'annonimisation, voir mon édition


Fixé pour la dernière faute de frappe. Cependant, où voyez-vous un Varchar2 dans une date?



0
votes

Qu'en est-il du paramètre de retour. C'est "mappé" d'accord? DoubleCheck


0 commentaires

0
votes

La réponse est sûrement claire dans le message d'erreur:

"Numéro incorrect ou types d'arguments en appel à" myprosto ""

Votre procédure attend 4 paramètres mais vous ne passez que 3. Vous avez besoin d'une variable de sortie pour le Refcursor.


0 commentaires

1
votes

J'avais la même chose qui m'arrive et j'ai finalement résolu. J'utilisais l'oracle.ManagedDataaccess.Client, comme vous, et si vous avez eu une solution .NET divisé en projet de présentation, du projet WebAPI et du projet d'accès aux données. Mon app.config dans le projet d'accès aux données a eu la section correcte impliciclefcursor avec la définition du curseur et les métadonnées comme vous l'avez, mais j'ai oublié de la copier également dans mon projet Web.config de mon projet WebAPI. Une fois que j'ai fait cela, mon "mauvais nombre ou type d'arguments" est parti. J'espère que cela pourra aider. (Je viens de copier l'ensemble de l'oracle.Managedataaccess.Client Section.)

En outre, si vous avez généré la section implicittrefcursor à la main, j'ai découvert un moyen beaucoup plus facile et fiable de le faire. Depuis l'explorateur de serveur .NET, connectez-vous à votre base de données, recherchez votre procédure stockée, cliquez dessus avec le bouton droit de la souris et exécutez. Alors ok. Il fera apparaître une liste des paramètres d'entrée et de sortie, y compris le curseur. Si vous cliquez sur le bouton Afficher configuration, il vous montrera ce qui doit être dans votre EF App.Config. Et le bouton AddConfig vous l'ajoutera pour vous. Cela aide à éviter les erreurs.


2 commentaires

Merci mon pote! Vous avez sauvé ma vie, c'est la dernière pièce que je recherche.


Si heureux que cela ait aidé. Procédures stockées Oracle ne sont définitivement pas conviviales avec cadre d'entité.