存储函数

来源:互联网 发布:吉利电动车知豆d1报价 编辑:程序博客网 时间:2024/06/06 19:46

自定义函数

用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置方法相同。

创建自定义函数

CREATE FUNCTION function_name          创建函数名RETURNS type                           用声明存储函数返回值得数据类型{STRING|INTEGER|REAL|DECIMAL}          类型[characteristic...]routine_body        程序主体

关于函数体

   函数体由合法的SQL语句构成

   函数体可以是简单的SELECT或INSERT语句

   函数体如果为复合结构则使用BEGIN...END语句

   复合结构可以包含声明,循环,控制结构

例子:创建一个(不带参数)自定义函数(存储函数)

mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)    -> RETURN DATE_FORMAT(NOW(),'%Y%m%d');Query OK, 0 rows affected (0.00 sec)

调用函数:

mysql>SELECT f1();
说明:

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

例子:创建一个(带有参数)自定义函数

mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)    -> RETURNS FLOAT(10,2) UNSIGNED    -> RETURN (num1+num2)/2;
调用函数:
mysql>SELECT f2(20,15);  结果为 12.50

例子:创建在一个(具有复合结构函数体的)自定义函数


存储函数与存储过程的区别

存储函数与存储过程十分相似,它存储过程一样,都是由SQL语句和过程式语句所组成的代码片段,并且可以被应用程序和其它SQL语句调用。

但是,存储函数与存储过程之间仍存在这样几点区别:

    存储函数不能拥有输出参数,这是因为存储函数自身就是输出函数,而存储过程可以拥有输出函数

    可以直接对存储函数进行调用,且不需要CALL语句;而对存储过程的调用,需要使用CALL语句

    存储过程中必须有RETURN语句;而且这条特殊的SQL语句不能不允许包含于存储过程中




0 0
原创粉丝点击