存储过程和函数 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 ...
随机推荐
- js身份证掩饰成**(class循环处理)
$('.shijian').each(function (i){ value=$(this).attr('data');value1=value.replace(/^(.{3})(?:\d+)(.{4 ...
- sse实例
一.前台 <script>//D:\wamp\www\node\xiangmuer\views\main // var source = new EventSource('http://1 ...
- table 合并内容相同的第一列
function mergeCells() { var tbodyTlth = $("#datatable_ajax1 tbody").find("tr").l ...
- sass 的安装 http://blog.csdn.net/weixin_38362146/article/details/78035971?locationNum=10&fps=1
http://blog.csdn.net/weixin_38362146/article/details/78035971?locationNum=10&fps=1
- npm run build
[npm run build] npm 会在项目的 package.json 文件中寻找 scripts 区域,其中包括npm test和npm start等命令. 其实npm test和npm st ...
- 批量更新list<string,string>
public void UpdateList(List<MysqlModule.Model.pro_premanifest> modelList) { List<MySqlParam ...
- 循环流程控制&方法(3)
1.循环流程控制 当某一段代码需要重复执行多次的时候,就需要用到循环: 循环三要素: 循环的起点:循环的终点(结束条件):步长: 当循环条件不再成立,结束循环: for循环 for(循环起点:循环条件 ...
- 四层协议给站点设置独享ip
四层协议给站点设置独享ip 初始化为四层节点 设置独占ip 设置独享的产品不用预设置分组 增加站点 创建站点后,在分组解析里会自动创建一个以站点名为名称的分组并且会自动分配一个独享的ip在这个分组里( ...
- spring boot 中使用 Redis 与 Log
spring boot + mybatis + redis 配置 1.application.yml #配置访问的URLserver: servlet-path: /web port: spring: ...
- 最小生成树 prime算法 UVALive - 6437
题目链接:https://vjudge.net/contest/241341#problem/D 这里有多个发电站,需要求出所有点都和发电站直接或间接相连的最小代价,那么就是求出最小生成树的问题了,有 ...