Myslím, že problém je ve vašem volání do procedury.
S verzemi konektoru MySQL, které nepodporují OUT
Normálním řešením je použití uživatelských proměnných MySQL k udržení návratových hodnot a následné spuštění dotazu k získání hodnot těchto proměnných.
Nejprve spusťte uloženou proceduru a nechte MySQL vložit hodnoty argumentů OUT do proměnných:
CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);
Všimněte si, že tyto proměnné nejsou parametry příkazu; jsou to proměnné, které jsou drženy v relaci MySQL. Chcete-li získat hodnoty těchto proměnných, ihned po volání procedury pomocí stejného připojení MySQL:
SELECT @IDVideo, @YoutubeIDVideo ;
A zpracujte sadu výsledků z tohoto dotazu, jako byste chtěli, aby jakýkoli jiný příkaz SELECT, u kterého očekáváte, že vrátí jeden řádek.
Aktualizace:
U novějších verzí konektoru MySQL, které podporují parametry OUT, si myslím, že musíte určit, že tyto parametry jsou parametry OUT, nastavením atributu člena:
cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;
Jak jsem již naznačil...
Ve starších verzích konektoru MySQL, které nepodporovaly parametry OUT, bylo řešením volání procedury pomocí proměnných MySQL jako argumentů. Hodnoty vrácené z volání procedury jsou zachovány v relaci MySQL. Ihned po zavolání procedury bychom spustili SELECT pro načtení obsahu uživatelských proměnných.