2009-05-04 4 views
0

Procédure stockée qui s'exécute correctement avec une base de données de développement mais ne s'exécute pas dans la base de données de production? Erreur renvoyée est: "PLS-00306: mauvais numéro ou types d'arguments en appel à <procedure naeme>"Impossible d'exécuter la procédure stockée dans une base de données différente?

oracle de base de données VC

Fermé: L'erreur est survenue en raison de mauvais synonyme.

+0

Il serait utile d'avoir la signature de la procédure qui pose problème, ainsi que le code que vous utilisez pour appeler cette procédure. Un petit exemple simple devrait suffire à éclaircir le problème sans révéler quoi que ce soit de privé. –

Répondre

0

Cette erreur n'a rien à voir avec un problème dans la procédure que vous exécutez. Cette erreur concerne la façon dont vous l'appelez dans une base de données par rapport à une autre. C'est l'appelant dans DEV qui envoie la bonne combinaison de paramètres et de types de paramètres. La logique qui appelle finalement la procédure dans PROD envoie une combinaison différente de paramètres.

Vérifiez d'abord la spécification de la procédure dans les deux bases de données pour vous assurer qu'elle est vraiment la même. Recherchez les différences dans les paramètres, les types de données ou toute différence dans DEFAULT NULL ou similaire.

Ensuite, vérifiez la logique qui appelle la procédure actuelle entre les bases de données. Habituellement, il manquera un des paramètres ou le type de données sera incorrect. L'ordre de vos paramètres est également important si vous n'utilisez pas la notation nommée.

Si finalement vous êtes sûr que tout est pareil, alors il est possible que ce soit lié aux données l'un des paramètres entrants manque de valeur et vos pilotes C++ n'appellent pas la même procédure.

Ceci est une erreur solide et claire et il est dit qu'il y a finalement une différence dans la façon dont il est appelé. Bonne chance.

+0

le code appelant et appelé sp reste identique dans la base de données – yesraaj

0

Vous devez fournir plus d'informations. Au moins, sont ces types de données «de base» (NUMBER, DATE, VARCHAR2, etc.) ou avez-vous exotiques (XMLTYPE, geo, types définis par l'utilisateur?) utiliser SQL * Plus, se connecter au schéma dans les deux bases de données et faire a DESC Postez les résultats afin que nous puissions les voir.

Questions connexes