MySQL存储过程中的语法学习

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

以下的文章主要介绍的是MySQL存储过程中的语法学习,主要内容包括名字,参数列表,与很多SQL语句的SQL语句集。以下就是具体方案的描述,希望会给你带来一些帮助在此学习方面。

一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集。

创建存储过程:

 

语法:

 

 
 
  1. CREATE PROCEDURE p()  
  2. BEGIN  

 

此存储过程的正文

 

 
 
  1. END  
  2. CREATE PROCEDURE productpricing()  
  3. BEGIN  
  4. SELECT Avg(pro_price) AS priceaverage  
  5. FROM products;  
  6. END;  

 

begin…end之间是存储过程的主体定义

MySQL的分界符是分号(;)
 

 

调用存储过程的方法是:

 

CALL加上过程名以及一个括号

例如调用上面定义的存储过程

 

 
 
  1. CALL productpricing();  

哪怕是不用传递参数,存储过程名字后面的括号“()”也是必须的
 

删除存储过程的方法是

 
 
  1. DROP PROCUDURE productpricing; 

创建带参数的存储过程:

 

 

 
 
  1. CREATE PROCUDURE productpricing(  
  2. OUT p1 DECIMAL(8,2),  
  3. OUT ph DECIMAL(8,2),  
  4. OUT pa DECIMAL(8,2)  
  5. )  
  6. BEGIN  
  7. SELECT Min(prod_price) INTO pl FROM products;  
  8. SELECT Max(prod_price) INTO ph FROM products;   
  9. SELECT Avg(prod_price) INTO pa FROM products;  
  10. END;  

 

DECIMAL用于指定参数的数据类型

OUT用于表明此值是用于从存储过程里输出的

MySQL支持 OUT, IN, INOUT
 

调用带参数的存储过程:

 

 

 
 
  1. CALL productpricing(@pricelow,  
  2. @pricehigh,  
  3. @priceaverage);   

 

所有的参数必须以@开头

要想获取@priceaverage的值,用以下语句

 

 
 
  1. SELECT @priceaverage; 

获取三个的值,用以下语句

 
 
  1. SELECT @pricehigh, @pricelow, @priceaverage; 

另一个带IN和OUT参数的存储过程:

 

 

 
 
  1. CREATE PROCEDURE ordertotal(  
  2. IN onumber INT,  
  3. OUT ototal DECIMAL(8,2)  
  4. )  
  5. BEGIN  
  6. SELECT Sum(item_price*quantity)  
  7. FROM orderitems  
  8. WHERE order_num = onumber 
  9. INTO ototal;  
  10. END;  
  11. CALL ordertotal(20005, @total);  
  12. SELECT @total;  

添加一个完整的例子:(这是一个自定义分页的存储过程)

 

 
 
  1. DELIMITER $$  
  2. DROP PROCEDURE IF EXISTS `dbcall`.`get_page`$$  
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `get_page`(  
  4. /**//*Table name*/  
  5. tableName varchar(100),  
  6. /**//*Fileds to display*/  
  7. fieldsNames varchar(100),  
  8. /**//*Page index*/  
  9. pageIndex int,  
  10. /**//*Page Size*/  
  11. pageSize int,   
  12. /**//*Field to sort*/  
  13. sortName varchar(500),  
  14. /**//*Condition*/  
  15. strWhere varchar(500)  
  16. )  
  17. BEGIN   
  18. DECLARE fieldlist varchar(200);   
  19. if fieldsNames=''||fieldsNames=null THEN  
  20. set fieldlist='*';  
  21. else  
  22. set fieldlist=fieldsNames;   
  23. end if;  
  24. if strWhere=''||strWhere=null then  
  25. if sortName=''||sortName=null then   
  26. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);  
  27. else  
  28. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);   
  29. end if;  
  30. else  
  31. if sortName=''||sortName=null then  
  32. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);  
  33. else  
  34. set @strSQL=concat('SELECT ',fieldlist,' FROM ',tableName,' WHERE ',strWhere,' 
    ORDER BY ',sortName,' LIMIT ',(pageIndex-1)*pageSize,',',pageSize);   
  35. end if;  
  36. end if;   
  37. PREPARE stmt1 FROM @strSQL;   
  38. EXECUTE stmt1;  
  39. DEALLOCATE PREPARE stmt1;  
  40. END$$  
  41. DELIMITER ;  

 

以上的相关内容就是对MySQL存储过程语法学习的介绍,望你能有所收获。










本文转自 yuanzhitang 51CTO博客,原文链接:http://blog.51cto.com/yuanzhitang/507525,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
21天前
|
存储 SQL 关系型数据库
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
|
存储 关系型数据库 MySQL
|
1月前
|
存储 关系型数据库 MySQL
Mysql基础第二十六天,使用存储过程
Mysql基础第二十六天,使用存储过程
28 0
Mysql基础第二十六天,使用存储过程
|
存储 关系型数据库 MySQL
|
16天前
|
SQL 存储 关系型数据库
6本值得推荐的MySQL学习书籍
本文是关于MySQL学习书籍的推荐,作者在DotNetGuide技术社区和微信公众号收到读者请求后,精选了6本值得阅读的MySQL书籍,包括《SQL学习指南(第3版)》、《MySQL是怎样使用的:快速入门MySQL》、《MySQL是怎样运行的:从根儿上理解MySQL》、《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》以及《高性能MySQL(第4版)》和《MySQL技术内幕InnoDB存储引擎(第2版)》。此外,还有12本免费书籍的赠送活动,涵盖《SQL学习指南》、《MySQL是怎样使用的》等,赠书活动有效期至2024年4月9日。
|
21天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
1天前
|
存储 SQL 关系型数据库
MySQL学习手册(第一部分)
mysql日常使用记录
31 0
|
15天前
|
存储 SQL 关系型数据库
mysql存储过程示例
mysql存储过程示例
11 0
|
存储 SQL 关系型数据库
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】9、存储过程
【MySQL 数据库】9、存储过程
205 0