在学习完存储过程后,今天主要回顾一下mysql中的存储函数的知识。

函数与存储过程的区别

首先,存储函数也是过程式对象之一,与存储过程相似。它们都是由SQL和过程式语句组成的代码片断,并且可以从应用程序和SQL中调用。

区别:

1.存储函数不能拥有输出参数,因为存储函数本身就是输出参数;

2.不能用CALL语句来调用存储函数;

3.存储函数必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含于存储过程中。

存储函数的创建

创建存储函数使用CREATE FUNCTION语句。查看数据库中的存储函数,可以使用SHOW FUNCTION STATUS命令。

创建存储函数的语法为:

 CREATE FUNCTION sp_name ([func_parameter[,....]])
RETURN type
[characteristic...] routine_body

说明:存储函数的定义格式和存储过程相关不大。

  • sp_name是存储函数的名称。存储函数不能拥有与存储过程相同的名字。
  • func_parameter是存储函数的参数,参数只有名称和类型,不能指定IN,OUT和INOUT。RETURN type子句声明函数返回值的数据类型。
  • routine_body是存储函数的主体,也叫存储函数数体。

例子:

delimiter $$
create function ss(ac char(6))
returns char(8)
begin
return (select username from user where id=ac);
end $$
delimiter ;

说明:RETURN子句中包含SELECT语句时,SELECT语句的返回结果只能是一行且只能有一列值。

存储函数的调用、删除和修改

调用

调用函数用select 关键字。

语法格式:

SELECT sp_name ([func_parameter[,...]])

例子:

select ss('11');

结果:

删除

语法格式:

DROP FUNCTION [IF EXISTS] sp_name

例子:

drop function if exists ss;

修改

语法格式:

ALTER FUNCTION sp_name [characteristic ...]

说明:函数其实不能修改,只能先删除再重新定义。

总结

函数与存储过程很相似,理解起来就很容易了。

最新文章

  1. ASP.NET MVC 路由(五)
  2. extjs 4.2 高度自适应
  3. springMVC框架中,在hib-config.xml配置sqlserver2008数据库连接的代码
  4. Android资源命名规范
  5. VS2015使用技巧 打开代码片段C#部分
  6. Rhel6-lanmp架构配置文档
  7. ZOJ 1005 Jugs
  8. 小组开发项目--NABC分析
  9. Android InputMethodManager输入法简介
  10. JB开发之二 [jailbreak,越狱开发研究]
  11. windows下sqlplus / as sysdba报ora-12560的解决方法
  12. guava之Joiner 和 Splitter(转)
  13. MessageDigest简要
  14. 基础总结篇之五:BroadcastReceiver应用具体解释
  15. 高精度运算专题3-乘法运算(The multiplication operation)
  16. 4个特殊ping
  17. GopherChina第一天小结
  18. WebView 判断放大缩小操作
  19. 软件推荐----截图软件Snagit
  20. 现代编译原理——第二章:语法分析之LL(K)

热门文章

  1. 国内外三个领域巨头告诉你Redis怎么用
  2. 【loj2133】【NOI2015】品酒大会
  3. 没有为扩展名“.cshtml”注册的生成提供程序。
  4. 怎么查看ubuntu是32bit还是64bit的?
  5. 基于javaWeb阶段下的Servlet总结
  6. [LeetCode] 29. Divide Two Integers ☆☆
  7. Android通过php插入查询SQL数据库
  8. Xamarin Error:Could not find android.jar for API Level 23.
  9. 在使用hibernate注解的时候,想对double类型的字段进行精度约束
  10. 贪心法:K叉哈夫曼树