En cuanto a habilitar SET
con variables definidas por el usuario en una cadena de consulta, debe declarar Allow User Variables=True
en la cadena de conexión, ya sea en web.config o en MySqlConnection
definición:
Web.config
<connectionStrings>
<add name="DefaultConnection" connectionString="server=ServerName;database=DatabaseName;uid=UserName;pwd=Password;
Allow User Variables=True" />
</connectionStrings>
Definición manual
string connectionString = @"server=ServerName;database=DatabaseName;uid=UserName;pwd=Password;
Allow User Variables=True";
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
string sqlCommand = "SET @userVar1 := 18; select * from db where [email protected] AND age > @userVar1"
connection.Open();
using (MySqlCommand command = new MySqlCommand(sqlCommand, connection))
{
// add required parameters here
// and call ExecuteReader() afterwards
}
}
La configuración de la variable definida por el usuario disponible a partir de la versión 5.2.2 de .NET Connector como se proporciona en esta explicación .
Problema relacionado:
¿Cómo puedo usar una variable definida por el usuario de MySql en un comando .NET MySqlCommand?