Mysql
 sql >> Database >  >> RDS >> Mysql

L'argomento errore 1 della procedura memorizzata per la routine ... non è una variabile o una pseudo-variabile NUOVA nel trigger BEFORE

Penso che il problema sia nella tua chiamata alla procedura.

Con versioni del connettore MySQL che non supportano OUT parametri, la soluzione normale consiste nell'utilizzare le variabili utente MySQL per mantenere i valori restituiti, quindi eseguire una query per ottenere i valori di tali variabili.

Per prima cosa, esegui la procedura memorizzata e chiedi a MySQL di inserire i valori degli argomenti OUT nelle variabili:

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

Si noti che quelle variabili non sono parametri di comando; sono variabili che vengono mantenute nella sessione di MySQL. Per ottenere i valori di tali variabili, subito dopo la chiamata alla procedura, utilizzando la stessa connessione MySQL:

SELECT @IDVideo, @YoutubeIDVideo ;

Ed elabora il set di risultati da quella query come vorresti qualsiasi altra istruzione SELECT che ti aspetti restituisca una riga.

Aggiornamento:

Con le versioni più recenti di MySQL Connector che supportano i parametri OUT, penso che tu debba specificare che quei parametri sono parametri OUT impostando un attributo membro:

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

Come ho indicato in precedenza...

Nelle versioni precedenti di MySQL Connector che non supportavano i parametri OUT, la soluzione consisteva nel chiamare la procedura utilizzando variabili MySQL come argomenti. I valori restituiti dalla chiamata alla procedura vengono mantenuti nella sessione MySQL. Immediatamente dopo aver chiamato la procedura, eseguiremmo un SELECT per recuperare il contenuto delle variabili utente.