Jeg tror, problemet ligger i din opfordring til proceduren.
Med versioner af MySQL-stikket, der ikke understøtter OUT
parametre, er den normale løsning at bruge MySQL-brugervariabler til at holde returværdierne og derefter køre en forespørgsel for at få værdierne af disse variabler.
Udfør først den lagrede procedure, og lad MySQL sætte værdierne af OUT-argumenterne ind i variabler:
CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);
Bemærk, at disse variabler ikke er kommandoparametre; de er variabler, der holdes i MySQL-sessionen. For at få værdierne af disse variabler, umiddelbart efter kaldet til proceduren, ved hjælp af den samme MySQL-forbindelse:
SELECT @IDVideo, @YoutubeIDVideo ;
Og bearbejd resultatsættet fra den forespørgsel, som du gerne vil have enhver anden SELECT-sætning, du forventer skal returnere én række.
Opdatering:
Med nyere versioner af MySQL Connector, der understøtter OUT-parametre, tror jeg, du skal specificere, at disse parametre er OUT-parametre ved at indstille en medlemsattribut:
cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;
Som jeg antydede tidligere...
I ældre versioner af MySQL Connector, som ikke understøttede OUT-parametre, var løsningen at kalde proceduren ved at bruge MySQL-variabler som argumenter. De værdier, der returneres fra procedurekaldet, bevares i MySQL-sessionen. Umiddelbart efter at have kaldt proceduren, ville vi køre en SELECT for at hente indholdet af brugervariablerne.