6
votes

Ora-06550: ligne 1, colonne 7: Pls-00306: mauvais nombre ou types d'arguments

J'ai un problème avec la procédure de magasin d'appel sur Oracle 11G Server.

Procédure stockée xxx

C # code xxx

cmd.executereader () jette cette exception:

ora-06550: ligne 1, colonne 7: Pls-00306: Nombre incorrect ou types de Arguments en appel à 'get_rit_by_user_id' ora-06550: ligne 1, colonne 7: Pl / SQL: déclaration ignorée

Qu'est-ce qui ne va pas avec le code ci-dessus qu'il obtient un un nombre incorrect de types d'arguments erreur?


3 commentaires

La variable p_id_utente me manque dans la liste des paramètres (vous avez un p_user cependant). Les deux autres sont là.


Ce n'est pas le problème, j'ai vérifié tous les noms des paramètres


Avez-vous examiné cette question à la question: Stackoverflow.com/questions/6360244/...


5 Réponses :


6
votes

Le problème le plus courant avec les paramètres d'entrée est null . Si kfckey ou user_id est null (soit une référence null, ou un nullable sans valeur ), puis pour de nombreux fournisseurs (et je suppose donc oracle aussi), il n'ajoutera pas le paramètre . Pour réussir un null , vous devez généralement passer dbnull.value à la place.

donc: vérifier pour null s. xxx


2 commentaires

bonne suggestion. J'ai vérifié que les valeurs ne sont pas nulles, mais l'erreur reste.


Pour confirmer l'hypothèse de Marc ci-dessus, ce correctif a fonctionné pour system.data.oracleclient.data.oracleclient.data.oracleclient.oracharamètre pour moi



7
votes

Votre deuxième paramètre est un numéro , pas un entier. Changer le deuxième type de paramètre sur oracledbtype.decimal

http://docs.oracle.com/cd/b19306_01/win.102/b14307/oracledbtypeenumerationType.htm

Vérifiez également la syntaxe de votre Ajouter méthodes. Il peut être préférable de spécifier les propriétés de paramètres plus explicitement, même si cela rend le code un peu plus verbeux: xxx

etc.

est Le processus renvoyant un ensemble de résultats en plus du curseur ? Si vous n'utilisez pas exécutenonquery au lieu de exécuter


1 commentaires

Qu'est-ce que type_cursor ? Est-ce un alias pour le curseur REF?



3
votes

Vérifiez votre orthographe de paramètre, il doit correspondre à la variable de la variable de la procédure de magasin, spécialement, si vous avez une variable de sortie. Je viens de passer quelques heures à dépanner un problème similaire, il s'est avéré que j'avais orthographié mon nom de paramètre de sortie.


0 commentaires

0
votes

Vous avez une sorte de type défini par l'utilisateur appelé "type_cursor" mais lie un paramètre SYS_Refcursor. C'est la cause de cette erreur.


0 commentaires

0
votes

J'avais parcouru un problème similaire et j'ai trouvé la cause racine idiote. Si votre problème est similaire, cela peut vous aider.

Dans notre cas, le message d'erreur exact est renvoyé à partir d'un appel de procédure d'un paquet. Après 10 heures, la validation du code Java, ses paramètres et le package arrière «Corps» et sa procédure, nous ne pouvions pas comprendre aucune différence.

Ensuite, nous avons remarqué que cet emballage a une procédure similaire avec un nombre différent de paramètres. Et la «prise» ici est que le colis n'était pas compilé avec la nouvelle méthode appelée depuis le début. Donc, ça va à l'ancienne procédure.

Veuillez vérifier si c'est la même chose avec votre cas.


0 commentaires