2010-01-06 5 views

Répondre

1

Est-ce ce que vous cherchez?

static void CallProc() 
{ 
//Establish connection 
MySqlConnection myConn = new MySqlConnection("user id=root;database=demobase;host=localhost"); 
myConn.Open(); 
//Set up myCommand to reference stored procedure 'myfunc' 
MySqlCommand myCommand = new MySqlCommand("myfunc", myConn); 
myCommand.CommandType = System.Data.CommandType.StoredProcedure; 

//Create input parameter and assign a value 
MySqlParameter myInParam = new MySqlParameter(); 
myInParam.Value = "Mark"; 
myCommand.Parameters.Add(myInParam); 
myInParam.Direction = System.Data.ParameterDirection.Input; 

//Create placeholder for return value 
MySqlParameter myRetParam = new MySqlParameter(); 
myRetParam.Direction = System.Data.ParameterDirection.ReturnValue; 
myCommand.Parameters.Add(myRetParam); 

//Execute the function. ReturnValue parameter receives result of the stored function 
myCommand.ExecuteNonQuery(); 
Console.WriteLine(myRetParam.Value.ToString()); 
myConn.Close(); 
} 

La fonction utilisée était:

CREATE FUNCTION demobase.myfunc(uname CHAR(20)) 
RETURNS CHAR(60) 
RETURN CONCAT(uname,' works with server ',@@version); 

Exemple extrait de here

+0

Il ne fonctionne. Erreur: La clé ne peut pas être nulle. Nom du paramètre: clé. – Zanoni

+0

Envoyez-vous tous les paramètres à votre fonction? – Canastro

-2

Il semble que vous pouvez utiliser:

dataAdapter = New MySqlDataAdapter(myCommand, myConn); 
data = new datatable(); 
dataAdapter.Fill(data); 
1

J'ai été récemment aux prises avec le même problème. Voici la solution que j'ai trouvée.

MySqlCommand comHash = new MySqlCommand("SELECT MY_FUNCTION (?my_parameter)", con); 
comHash.CommandType = CommandType.Text; 
comHash.Parameters.AddWithValue("my_parameter", "value1"); 
0

Essayez ceci:

// 
MySqlCommand myCommand = new MySqlCommand(); 
myCommand.CommandType = System.Data.CommandType.StoredProcedure; 
myCommand.CommandText = "FNC_IsUserInSite"; 

MySqlParameter rv = new MySqlParameter(); 
rv.Direction = System.Data.ParameterDirection.ReturnValue; 
rv.MySqlDbType = MySqlDbType.Int32; 
rv.ParameterName = "@retval"; 
myCommand.Parameters.Add(rv); 

myCommand.Connection = connection; 
// 

myCommand.ExecuteScalar(); 
object ret = myCommand.Parameters["@retval"].Value; 

if (ret != null) 
{ 
    if ((int)ret > 0) 
    { 
     ... 
    } 
} 
Questions connexes