Мисля, че проблемът е във вашето извикване на процедурата.
С версии на MySQL конектора, които не поддържат OUT
параметри, нормалното заобиколно решение е да се използват потребителски променливи на MySQL за задържане на върнатите стойности и след това да се изпълни заявка, за да се получат стойностите на тези променливи.
Първо, изпълнете съхранената процедура и накарайте MySQL да постави стойностите на OUT аргументите в променливи:
CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);
Имайте предвид, че тези променливи не са командни параметри; те са променливи, които се съхраняват в MySQL сесията. За да получите стойностите на тези променливи, веднага след извикването на процедурата, като използвате същата MySQL връзка:
SELECT @IDVideo, @YoutubeIDVideo ;
И обработете набора от резултати от тази заявка, както бихте искали всеки друг оператор SELECT, който очаквате да върне един ред.
Актуализация:
С по-новите версии на MySQL Connector, които поддържат OUT параметри, мисля, че трябва да посочите, че тези параметри са OUT параметри, като зададете членски атрибут:
cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;
Както посочих по-рано...
В по-старите версии на MySQL Connector, които не поддържаха OUT параметри, заобиколното решение беше процедурата да се извика с помощта на MySQL променливи като аргументи. Стойностите, върнати от извикването на процедурата, се запазват в MySQL сесията. Веднага след извикване на процедурата, ще изпълним SELECT, за да извлечем съдържанието на потребителските променливи.