以下的文章主要介绍的是MySQL 存储过程的实际操作解析,我们大家都知道一个MySQL 存储过程主要包括名字,参数列表,还有包括很多的SQL语句与SQL语句集。以下就是具体内容的描述,
创新互联公司是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如水处理设备等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致赞赏。
创建MySQL 存储过程:
语法:
- CREATE PROCEDURE p()
- BEGIN
/*此存储过程的正文*/
- END
- CREATE PROCEDURE productpricing()
- BEGIN
- SELECT Avg(pro_price) AS priceaverage
- FROM products;
- END;
begin…end之间是存储过程的主体定义
MySQL的分界符是分号(;)
调用存储过程的方法是:
CALL加上过程名以及一个括号
例如调用上面定义的MySQL 存储过程
- CALL productpricing();
哪怕是不用传递参数,存储过程名字后面的括号“()”也是必须的
删除存储过程的方法是:
- DROP PROCUDURE productpricing;
创建带参数的存储过程:
- CREATE PROCUDURE productpricing(
- OUT p1 DECIMAL(8,2),
- OUT ph DECIMAL(8,2),
- OUT pa DECIMAL(8,2)
- )
- BEGIN
- SELECT Min(prod_price) INTO pl FROM products;
- SELECT Max(prod_price) INTO ph FROM products;
- SELECT Avg(prod_price) INTO pa FROM products;
- END;
DECIMAL用于指定参数的数据类型
OUT用于表明此值是用于从存储过程里输出的
MySQL支持 OUT, IN, INOUT
调用带参数的MySQL 存储过程:
- CALL productpricing(@pricelow,
- @pricehigh,
- @priceaverage);
所有的参数必须以@开头
要想获取@priceaverage的值,用以下语句
SELECT @priceaverage;
获取三个的值,用以下语句
- SELECT @pricehigh, @pricelow, @priceaverage;
另一个带IN和OUT参数的存储过程:
- CREATE PROCEDURE ordertotal(
- IN onumber INT,
- OUT ototal DECIMAL(8,2)
- )
- BEGIN
- SELECT Sum(item_price*quantity)
- FROM orderitems
- WHERE order_num = onumber
- INTO ototal;
- END;
- CALL ordertotal(20005, @total);
- SELECT @total;
添加一个完整的例子:(这是一个自定义分页的MySQL 存储过程)
- DELIMITER $$
- DROP PROCEDURE IF EXISTS `dbcall`.`get_page`$$
- CREATE DEFINER=`root`@`localhost` PROCEDURE `get_page`(
- /**//*Table name*/
- tableName varchar(100),
- /**//*Fileds to display*/
- fieldsNames varchar(100),
- /**//*Page index*/
- pageIndex int,
- /**//*Page Size*/
- pageSize int,
- /**//*Field to sort*/
- sortName varchar(500),
- /**//*Condition*/
- strWhere varchar(500)
- )
- BEGIN
- DECLARE fieldlist varchar(200);
- if fieldsNames=''||fieldsNames=null THEN
- set fieldlist='*';
- else
- set fieldlist=fieldsNames;
- end if;
- if strWhere=''||strWhere=null then
- if sortName=''||sortName=null then
- set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);
- else
- set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);
- end if;
- else
- if sortName=''||sortName=null then
- set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);
- else
- set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);
- end if;
- end if;
- PREPARE stmt1 FROM @strSQL;
- EXECUTE stmt1;
- DEALLOCATE PREPARE stmt1;
- END$$
- DELIMITER ;
以上的相关内容就是对MySQL 存储过程的介绍,望你能有所收获。
【编辑推荐】
本文标题:MySQL 存储过程的创建方案
分享网址:http://www.mswzjz.cn/qtweb/news9/256959.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能