30 Ago 2008
Inserito da: Andrea Lanfranchi in: Programmazione
Sono diventato matto per un paio di giorni alla ricerca del perchè, senza apparente motivo, utilizzando il connettore .NET di MySql, per certe Stored Procedures non riuscivo ad ottenere il valore dei parametri di Output. In realtà il motivo c’era ed era documentato qui.
In pratica succede che se il comando viene eseguito per restituire un reader la collezione dei parametri associati al comando non viene sincronizzata.
Per esempio
Dim myCmd as New MySqlCommand("nome_procedura", Connection)
myCmd.CommandType = CommandType.StoredProcedure
Dim myOutParam as New MySqlParameter("nomeparametro", MySqlDbType.Int32)
myOutParam.Direction = ParameterDirection.Output
myCmd.Parameters.Add(myOutParam)
Dim myReader as MySqlDataReader = myCmd.ExecuteReader()
If Not myCmd.Parameters(myOutParam).Value Is Nothing Then
' Qui i parametri di output non hanno ancora il valore di ritorno
...
...
End If
myReader.Close
If Not myCmd.Parameters(myOutParam).Value Is Nothing Then
' Qui i parametri di output hanno il valore di ritorno
...
...
End If
Se invece il comando viene eseguito con il metodo ExecuteNonQuery … non ci sono problemi.