存储过程和函数 PROCEDURE & FUNCTION
SQL语句执行的时候,要首先编译,然后在被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。
具体而言,存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后,再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行。
创建存储过程:
CREATE PROCEDURE 存储过程名([IN|OUT|INOUT] 变量名 变量类型)
BEGIN
代码块
END;
IN:表示传递给存储过程,类似形参
OUT:表示从存储过程传出
INOUT:表示对存储过程传入和传出
# example
CREATE PROCEDURE orderTotal(
IN orderNumber INT,
OUT orderTotal DECIMAL(8,2)
)
BEGIN
SELECT Sum(item_price * quantity)
FROM orderItems
WHERE order_num = orderNumber
INTO orderTotal; # INTO关键字表示把结果保存到变量中
END;
调用存储过程:
CALL orderTotal(2005, @total); # 所有MySQL变量都必须以@开始
SELECT @total; # 查看调用存储过程后变量中的值
查看存储过程:
SHOW CREATE PROCEDURE 存储过程名称; # 显示用来创建一个存储过程的CREATE语句
SHOW PROCEDURE STATUS LIKE '存储过程名称' # 显示包括何时、有谁创建等详细信息的存储过程列表
删除存储过程:
DROP PROCEDURE [IF EXISTS] 存储过程名称;
使用存储过程可以增强SQL语言的功能和灵活性。由于用流程控制语句编写存储过程具有很强的灵活性,所以使用存储过程可以完成复杂的判断和运算,并且可以保证数据的安全性和完整性;另外,存储过程可以使没有权限的用户在控制之下间接地存取数据库,也保证了数据的安全。
具体而言其优点有:
1)执行效率高
2)减少网络流量。因为在调用的时候不需要每次都把SQL语句传输到数据库上
3)安全机制好。通过对存储过程进行授权,从而保证安全性。
存储过程的弊端:
不同数据库的语法差别很大,移植困难,换了数据库,需要重新编写。
不容易管理,把过多业务逻辑写在存储过程中不容易维护,不利于分层管理,容易混乱。
一般存储过程适用于对性能要求较高的业务。
存储过程和函数 PROCEDURE & FUNCTION的更多相关文章
- MySQL 存储过程和函数
概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...
- MySQL 存储过程和函数(转)
概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...
- MySQL主从环境下存储过程,函数,触发器,事件的复制情况
下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...
- MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- 我的MYSQL学习心得(十) 自定义存储过程和函数
我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...
- Mysql的视图、存储过程、函数、索引全解析
视图是查询命令结果构成的一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集合,并可以当作表来查询使用. 1创建视图 --格式:C ...
- MySQL 第十天(视图、存储过程、函数、触发器)
MySql高级-视图.函数.存储过程.触发器 目录 一.视图 1 1.视图的定义 1 2.视图的作用 1 (1)可以简化查询. 1 (2)可以进行权限控制, 3 3.查询 ...
- MySQL4:存储过程和函数
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...
- PKG_COLLECTION_LHR 存储过程或函数返回集合类型
存储过程或函数可以返回集合类型,方法很多,今天整理在一个包中,其它情况可照猫画虎. CREATE OR REPLACE PACKAGE PKG_COLLECTION_LHR AUTHID CURREN ...
随机推荐
- linux服务器设置只允许密钥登陆
首先需要修改一些配置文件 vim /etc/ssh/sshd_config 进入sshd_config文件后需要更改几个地方 PubkeyAuthentication yes #启用公告密钥配对认证方 ...
- 1.3.7、CDH 搭建Hadoop在安装之前(端口---第三方组件使用的端口)
第三方组件使用的端口 在下表中,每个端口的“ 访问要求”列通常是“内部”或“外部”.在此上下文中,“内部”表示端口仅用于组件之间的通信; “外部”表示该端口可用于内部或外部通信. Component ...
- wget 报错 OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failur
解决办法 换成 curl -O -L xxxxxxxx
- Bootstrap Popover
[Bootstrap Popover] 1.设置一个popover需要添加以下设置: 1)data-toggle="popover" 2)title="Example p ...
- React DevTools
[React DevTools] 在应用商店搜索安装.F12可打开.如果是react应用,在最右排会显示react标签. 参考:https://github.com/facebook/react-de ...
- Python全栈开发 列表, 元组 数据类型知识运用及操作 range知识
一.列表 1.什么是列表? 列表是一个可变类型,由 [ ] 表示,每一项元素用逗号隔开.列表能够装大量的数据,可以装对象的对象. 2.列表的索引和切片. 列表和字符串一样,也有索引和切片.只不过列表 ...
- spring 中 PO与DTO相互转换的工具类
public class BeanMapper { /** * 持有Dozer单例, 避免重复创建DozerMapper消耗资源. */ private static DozerBeanMapper ...
- 缩点+最小路径覆盖 hdu 3861
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861 题意:输入t,表示t个样例.接下来每个样例第一行有两个数n,m表示点数和有向边的数量,接下来输入 ...
- 调用高德地图API(热力图)详解
具体脚本语言如下: <!doctype html> <html> <head> <meta charset="utf-8"> < ...
- 大数据入门推荐 - 数据之巅 大数据革命,历史、现实与未来等五本PDF
扫码时备注或说明中留下邮箱付款后如未回复请至https://shop135452397.taobao.com/联系店主