mysql-(五)-存储过程

5.1什么是存储过程

带有逻辑的sql语句

  之前的sql没有条件判断,没有循环

  存储过程带上流程控制语句(if while)

5.2存储过程的特点

1) 执行效率非常快!存储过程在数据库服务端执行

2)  移值性很差,不同数据库不能一直

语法:

DELIMITER $   --声明结束符号

CREATE PROCEDURE pro_test()

BEGIN

    --可写多个sql语句

    SELECT × FROM employee;

END $

-- 执行存储过程

CALL pro_test();

参数

带有输入参数的存储过程

--需求传入一个员工的id,查询员工信息

//带有输入参数的存储过程

DELIMITER $

CREATE PROCEDURE pro_findById(IN eid INT)  --IN传入参数

BEGIN

SELECT* FROM emplotee WHERE id = eid;

END $

---调用

CALL pro_findById(4);

---带有输出参数的存储过程

DELIMITER $

CREATE PROCEDURE pro_testOut(OUT str VARCHAR(20))  --OUT:输出参数

BEGIN

SET str = "这是一个输出参数"

END $

--删除存储过程

drop PROCEDURE pro_testOut;

--如何接受返回参数的值

--mysql全局变量

参看所有全局变量

--show variables

模糊查询全局变量

--show variables like "character_%"

接受数据编码设置

--character_set_client;

输出数据编码设置

--character_set_results;

×××会话变量---只存在于当前客户端与服务器端的一次连接当中,如果链接断开,那么会话变量全部消失

定义一个会话的变量

SET @NAME =‘eric‘

查看会话变量

select @NAME;

×××局部变量,只要存储过程执行完毕,局部变量就丢失

×××1)定义一个会话变量name,2)使用name会话 

CALL pro_testOut(@NAME);

***带有输入输出参数的存储过程

DELIMITER $

CREATE PROCEDURE pro_testInuut(INOUT n INT)

BEGIN

    SELECT n;

    SET n = 500;

END$

--带有条件判断的存储过程

DELIMITER $

CREATE PROCEFURE pro_testIf(IN num INT , OUT str VARCHAR(20))

BEGIN

IF num = 1 THEN

SET str="星期一";

ELSEIF num = 2 THEN

SET str="星期二";

ELSE

SET str="输入有错误"

END IF;

END$

CALL pro_testIf(1,@str)

SELECT @ str;

**带有循环过程的存储过程

DELIMITER $

CREATE PROCEDURE pro_testWhile(IN num INT , OUT result INT)

BEGIN

DECLARE i INT DEFAULT 1;

DECLARE vsum INT DEFAULT 0;

WHILE i < =num DO

SET vsum = vsum + i;

i = i +1;

END WHILE;

SET result = vsum;

END $

使用查询的结果作为返回值

DELIMITER $

CRETAE PROCEDURE pro_findById(IN eid INT, OUT vname VARCHAR(20))

BEGIN

SELECT empName INTO vname FROM employee WHERE id = eid;

END $

时间: 2024-12-29 23:54:55

mysql-(五)-存储过程的相关文章

mysql写存储过程/PHP写和调用存储过程

PHP调用MYSQL存储过程实例 来源: http://blog.csdn.net/ewing333/article/details/5906887 实例一:无参的存储过程 $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!"); mysql_select_db('test',$conn); $sql = " create procedure myproce() begin INSERT IN

MYSQL中存储过程的创建,调用及语法

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 第一部分:创建一个简单的无参的存储过程 1 用mysql客户端登入

MySQL 中存储过程的使用

关于 MySQL 的存储过程,我所了解的一些有规模的公司,对于使用存储过程实现业务逻辑都有严格的限制.我这里搜罗了一些资料,结合自身的经验,总结一些自己关于 MySQL 中存储过程使用的认识.由于水平有限,如有纰漏错误,还请多拍砖. 存储过程的优点主要包括以下几点: 1. 性能提高.相对于不使用存储过程来说的,因为存储过程在创建的时候,数据库已经对其进行了一次解析和优化,而后每次调用都不会再次编译,这相对于传统的SQL语句中每次调用都需要编译的情况来说,性能有所提高,存储过程经过编译之后会比单独

MySQL数据库存储过程动态表建立(PREPARE)

PREPARE statement_name FROM sql_text /*定义*/ EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/ DEALLOCATE PREPARE statement_name /*删除定义*/ 这是我项目当中用到的,用作参考使用: DELIMITER $$ DROP PROCEDURE IF EXISTS `gpsdata`.`sp_test`$$ CREATE DEFINER=`r

mysql 自定义存储过程和触发器

mysql 自定义存储过程和触发器 --存储过程示范 DROP PROCEDURE IF EXISTS PRO_TEST; CREATE PROCEDURE PRO_TEST(IN NUM_IN INT,OUT NUM_OUT INT,INOUT NUM_INOUT) BEGIN //DO ANYTHING YOU WANT END; 参数解释: in : 就是输入参数,输入参数是会被传入到存储过程作为参数使用,改变它的值将不会改变其原本值,相当于是值传递 out: 此为输出参数,在存储过程中为

[转]MYSQL 创建存储过程

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 一.MySQL 创建存储过程 "pr_add" 是个简单的

MySql 分页存储过程

DELIMITER $$ #改动分隔符为 $$ DROP PROCEDURE IF EXISTS sp_MvcCommonDataSource$$ #分隔符 CREATE PROCEDURE sp_MvcCommonDataSource ( #输入參数 _fields VARCHAR(2000), #要查询的字段,用逗号(,)分隔 _tables TEXT, #要查询的表 _where VARCHAR(2000), #查询条件 _orderby VARCHAR(200), #排序规则 _page

调用MySql 分页存储过程带有输入输出参数

1 Create PROCEDURE getuser 2 ( 3 IN pageIndex INT, 4 IN pageSize INT, 5 OUT count INT 6 ) 7 8 BEGIN 9 declare pindex int DEFAULT (pageIndex-1)*pageSize; 10 11 select * from lc_user order by id LImit pindex,pageSize; 12 13 SELECT COUNT(id) INTO count

JDBC对MySQL数据库存储过程的调用

一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完毕特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中.用户通过指定存储过程的名字并给出參数(假设该存储过程带有參数)来运行它. 2.与一般SQL语句相比.使用存储过程有哪些长处.有哪些缺点 长处: 1).降低了脚本的运行环节,缩短了获取数据的时间.存储过程仅仅在创建的时进行编译,在调用使用的时候直接运行.不需再次编译:而一般SQL语句每次运行前都须要编译

mysql导出存储过程或函数

查询数据库中的存储过程和函数方法一:select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE'   //存储过程select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION'   //函数方法二:show procedure status; //存储过程show function status;