Mysql
 sql >> Base de données >  >> RDS >> Mysql

L'argument d'erreur de procédure stockée 1 pour la routine ... n'est pas une variable ou une NOUVELLE pseudo-variable dans le déclencheur BEFORE

Je pense que le problème est dans votre appel à la procédure.

Avec les versions du connecteur MySQL qui ne prennent pas en charge OUT paramètres, la solution de contournement normale consiste à utiliser des variables utilisateur MySQL pour contenir les valeurs de retour, puis à exécuter une requête pour obtenir les valeurs de ces variables.

Tout d'abord, exécutez la procédure stockée et demandez à MySQL de placer les valeurs des arguments OUT dans des variables :

CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);

Notez que ces variables ne sont pas des paramètres de commande ; ce sont des variables qui sont conservées dans la session MySQL. Pour obtenir les valeurs de ces variables, immédiatement après l'appel à la procédure, en utilisant la même connexion MySQL :

SELECT @IDVideo, @YoutubeIDVideo ;

Et traitez le jeu de résultats de cette requête comme vous le feriez pour toute autre instruction SELECT dont vous vous attendez à renvoyer une ligne.

Mise à jour :

Avec les versions plus récentes du connecteur MySQL qui prennent en charge les paramètres OUT, je pense que vous devez spécifier que ces paramètres sont des paramètres OUT en définissant un attribut de membre :

cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;

Comme je l'ai indiqué précédemment...

Dans les anciennes versions du connecteur MySQL qui ne supportaient pas les paramètres OUT, la solution consistait à appeler la procédure en utilisant des variables MySQL comme arguments. Les valeurs renvoyées par l'appel de procédure sont conservées dans la session MySQL. Immédiatement après avoir appelé la procédure, nous exécutons un SELECT pour récupérer le contenu des variables utilisateur.