sql >> Databáze >  >> RDS >> Mysql

Argument chyby uložené procedury 1 pro rutinu ... není proměnná nebo NOVÁ pseudoproměnná ve spouštěči BEFORE

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.



  1. mysql + aktualizace top n

  2. Zkontrolujte zdroj ovládání všech ovládacích prvků ve vašem projektu MS Access

  3. SQLSTATE[HY000] [2002] Žádný takový soubor nebo adresář

  4. získat obrázek typu mime