giovedì 28 febbraio 2008

MySql - Richiamare Stored Functions

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:

Manuale Stored Procedure su MySql
MySql

Nessun commento: