MySql学习笔记——存储函数
2024-08-25 22:37:39
在学习完存储过程后,今天主要回顾一下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 ...]
说明:函数其实不能修改,只能先删除再重新定义。
总结
函数与存储过程很相似,理解起来就很容易了。
最新文章
- ASP.NET MVC 路由(五)
- extjs 4.2 高度自适应
- springMVC框架中,在hib-config.xml配置sqlserver2008数据库连接的代码
- Android资源命名规范
- VS2015使用技巧 打开代码片段C#部分
- Rhel6-lanmp架构配置文档
- ZOJ 1005 Jugs
- 小组开发项目--NABC分析
- Android InputMethodManager输入法简介
- JB开发之二 [jailbreak,越狱开发研究]
- windows下sqlplus / as sysdba报ora-12560的解决方法
- guava之Joiner 和 Splitter(转)
- MessageDigest简要
- 基础总结篇之五:BroadcastReceiver应用具体解释
- 高精度运算专题3-乘法运算(The multiplication operation)
- 4个特殊ping
- GopherChina第一天小结
- WebView 判断放大缩小操作
- 软件推荐----截图软件Snagit
- 现代编译原理——第二章:语法分析之LL(K)
热门文章
- 国内外三个领域巨头告诉你Redis怎么用
- 【loj2133】【NOI2015】品酒大会
- 没有为扩展名“.cshtml”注册的生成提供程序。
- 怎么查看ubuntu是32bit还是64bit的?
- 基于javaWeb阶段下的Servlet总结
- [LeetCode] 29. Divide Two Integers ☆☆
- Android通过php插入查询SQL数据库
- Xamarin Error:Could not find android.jar for API Level 23.
- 在使用hibernate注解的时候,想对double类型的字段进行精度约束
- 贪心法:K叉哈夫曼树