mysql --- 存储过程
2016-02-27 09:53
525 查看
我们输入的SQL命令 MysSQL引擎 会分析语法是否正确
正确了然后在进行编译 编译了可识别命令 最后执行
并将执行结果返回给客户端
如果减去了引擎的编译和命令的识别 就可以提高效率
存储过程
存储过程是SQL语句和控制语句的预编译集合,以一个名称存储
并作为一个单元处理 存储过程存储在数据库内 可以由应用·
程序调用执行 允许用户声明变量而且进行流程控制
存储过程可以接收参数 可以接收输入类型的参数
也可以接收输出类型的参数
存储过程的优点
增强SQL语句的功能和灵活性
实现较快的执行速度
减少了网络流量
创建存储过程
修改存储过程
ALTER PROCEDURE sp_name[characteristic ..]
COMMENT 'string'
|{CONTAIN SQL| NO SQL| READS SQL DATA| MODIFIES SQL DATA}
|SQL SECURITY{DEFINER|INVOKER}
删除存储过程
DELETE PROCEDURE name
创建不带参数的存储过程
CREATE PROCEDURE sp1() SELECT VERSION();
调用存储过程
CALL sp_name([parameter[,..]])
CALL SP_name[()]
call sp1;
call sp1();
正确了然后在进行编译 编译了可识别命令 最后执行
并将执行结果返回给客户端
如果减去了引擎的编译和命令的识别 就可以提高效率
存储过程
存储过程是SQL语句和控制语句的预编译集合,以一个名称存储
并作为一个单元处理 存储过程存储在数据库内 可以由应用·
程序调用执行 允许用户声明变量而且进行流程控制
存储过程可以接收参数 可以接收输入类型的参数
也可以接收输出类型的参数
存储过程的优点
增强SQL语句的功能和灵活性
实现较快的执行速度
减少了网络流量
创建存储过程
CREATE [DEFINER ={user| CURRENT_USER}] PROCEDURE sp_name([proc_parameter[,..]]) [characteristic ..] routine_body proc_parmeter: [IN|OUT|INOUT] param_name type IN,表示该参数的值必须在调用存储过程时指定 OUT, 表示该参数的值可以被存储过程改变,并且可以返回 INOUT,表示该参数的调用时指定,并且可以被改变和返回
过程体 过程体由合法的SQL语句构成; 过程体可以是任意SQL语句; 过程体如果为复合结构则使用 BEGIN..END语句 复合结构可以包含声明,循环,控制结构
修改存储过程
ALTER PROCEDURE sp_name[characteristic ..]
COMMENT 'string'
|{CONTAIN SQL| NO SQL| READS SQL DATA| MODIFIES SQL DATA}
|SQL SECURITY{DEFINER|INVOKER}
删除存储过程
DELETE PROCEDURE name
创建不带参数的存储过程
CREATE PROCEDURE sp1() SELECT VERSION();
调用存储过程
CALL sp_name([parameter[,..]])
CALL SP_name[()]
call sp1;
call sp1();
DELIMITER // CREATE PROCEDURE removeUserById( IN p_id INT UNSIGNED ) BEGIN DELETE FROM users WHERE id = p_id; END // DELIMITER ; CALL removeUserById(3); CREATE PROCEDURE removeUserAndRturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT ) BEGIN DELETE FROM users WHERE id= p_id; SELECT count(id) FROM users INTO userNums; END DELIMITER ; CALL removeUserAndRturnUserNums(27,@nums); select @nums; --表示变量 局部变量只能在begin 和end之间 有效 ,没有 set @i =7 用户变量 SELECT ROW_COUNT();
相关文章推荐
- mysql ---自定义函数
- mysql批量删除前缀相同的表
- 数据库---mysql 事务
- mysql开启慢SQL并分析原因
- MySQL修改tmpdir参数
- MySQL批量插入数据脚本
- mysql主从复制跳过错误
- 死锁-1.0.2
- mysql拒绝访问 Error 1044/1045 问题的解决
- mysql字段类型的选择
- mac下修改mysql密码
- Windows下忘记mysql的root密码处理
- MySQL server PID file could not be found!
- 关系型数据库MySQL基础
- MySQL manager or server PID file could not be found! 的方法
- mysql root密码丢失
- mysql慢查询日志
- mono下使用Nhibernate
- mysql的数据类型int、bigint、smallint 和 tinyint取值范围
- MySql经典语句