MySQL存储过程
来源:互联网 发布:linux can总线编程 编辑:程序博客网 时间:2024/06/05 10:04
存储过程是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理;有以下优点:
1).增强SQL语句的功能和灵活性
2).实现较快的执行速度
3).减少网络流量
1.存储过程语法结构
CREATE
[DEFINER = { user|CURRENT_USER}]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...]routine_body
proc_parameter:
[IN|OUT|INOUT] param_name type ;其中IN 表示该参数的值必须在调用存储过程时指定;OUT 表示该参数的值可以被存储过程改变,并且可以返回;OUT 表示该参数的值调用时指定,并且可以被修改和返回
2.过程体(routine_body)
过程体有合法的SQL语句构成;可以是简单的SELECT或INSERT语句;如果为符合结构则使用BEGIN...END语句;复合结构可以包含声明、循环、控制结构
3.存储过程的调用
CALL sp_name([parameter,..])
CALL sp_name[()]
eg:CREATE PROCEDURE 任意名字() SELECT VERSION();//创建一个存储过程
CALL 任意名字();//这是调用存储过程,结果返回一个版本号信息
4.删除存储过程
DROP PROCEDURE [IF EXISTS] sp_name
5.举例创建一个含in参数的存储过程
mysql> DELIMITER //
mysql> CREATE PROCEDURE removeUserById(IN id INT UNSIGNED)
-> BEGIN
-> DELETE u FROM users AS u WHERE u.id=id;
-> END
-> //
6.举例创建一个含in和out的存储过程
DELIMITER //
CREATE PROCEDURE removerUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT usersNums INT UNSIGNED)
BEGIN
DELETE FROM users WHERE id = p_id;
SELECT COUNT(id) FROM users INTO userNums;
END
//
7.mysql变量的术语分类:
1).用户变量:以"@"开始,形式为"@变量名"
用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效
2.)全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名
对所有客户端生效。只有具有super权限才可以设置全局变量
3).会话变量:只对连接的客户端有效。
4.)局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量
declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量
8.创建多个out的举例
create procedure removeage(in p_age smallint unsigned,out deletecounts smallint unsigned,out usercounts smallint unsigned)
-> begin
-> delete from t1 where age=p_age;
-> select row_count() into deletecounts;
-> selete count(id) from t1 into usercounts;
-> end
-> //
(t1是自己创建的需要处理的数据表)
9.存储过程与自定义函数的区别
存储过程实现的功能要复杂一些;而函数的针对性更强
存储过程可以返回多个值;而函数只能有一个返回值
存储过程一般独立的来执行;而函数可以作为其他SQL语句的组成部分来出现
- 【mysql】mysql存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- C++中copy constructor
- glBegin()参数意义
- PAT考试乙级1018(C语言实现)
- net.sf.jasperreports.engine.JRException: Error retrieving field value from bean
- ISO8583报文拼装工具类
- MySQL存储过程
- 第三方库引起错误
- 单片机学习心得
- Gson工具 基本API
- Java高级篇-11-可变长参数的使用
- 报错:JPA-style positional param was not an integral ordinal;
- 字符消除 hihoCoder1039
- 用WPS自制表格
- Java web-反射类的学习