MySql con la release 5 ha introdotto, tra le altre cose anche la possibilità di gestire delle Stored Functions (User Defined Functions).
Per la realizzazione della prova ho generato una nuova funzione tramite MySqlAdministrator
CREATE DEFINER=`root`@`%` FUNCTION `function1`(inValue int) RETURNS int(11)
BEGIN
declare retValue INTEGER DEFAULT 0;
set retValue = inValue + 1;
RETURN retValue;
END
Sostanzialmente fa pochissimo, restituisce il valore in input + 1
La chiamata da console Mysql diventa:
mysql> select function1(10)
-> ;
+---------------+
| function1(10) |
+---------------+
| 11 |
+---------------+
1 row in set (0.00 sec)
La chiamata da VB.NET diventa:
Dim cm As New MySqlCommand("Select function1(?inValue)", cn)
Dim prm As New MySqlParameter
prm.ParameterName = "?inValue"
prm.DbType = DbType.Int32
prm.Value = 12
cm.Parameters.Add(prm)
Dim o As Object
o = cm.ExecuteScalar()
MessageBox.Show(o.ToString)
Da C#
MySqlCommand cm = new MySqlCommand("Select function1(?inValue)", cn);
MySqlParameter prm = new MySqlParameter();
prm.ParameterName = "?inValue";
prm.DbType = DbType.Int32;
prm.Value = i;
cm.Parameters.Add(prm);
object o = cm.ExecuteScalar();
MessageBox.Show(o.ToString);
Riferimenti: