以下的文章主要介绍的是MySQL存储过程中的语法学习,主要内容包括名字,参数列表,与很多SQL语句的SQL语句集。以下就是具体方案的描述,希望会给你带来一些帮助在此学习方面。
一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集。
创建存储过程:
语法:
CREATE PROCEDURE p() BEGIN
此存储过程的正文
END CREATE PROCEDURE productpricing() BEGIN SELECT Avg(pro_price) AS priceaverage FROM products; END;
begin…end之间是存储过程的主体定义
MySQL的分界符是分号(;)
调用存储过程的 *** 是:
CALL加上过程名以及一个括号
例如调用上面定义的存储过程
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
调用带参数的存储过程:
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;
添加一个完整的例子:(这是一个自定义分页的存储过程)
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的认识是不是更上一层楼了,时时关注ITjs,学习最新Mysql技术。
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
打开IE浏览器的时候、聊QQ的时候、玩游戏的时候… … 这到底是谁惹的祸呢? 很多人都知道Windows 7桌面特效全部开启会使系统性能降低,那到底是哪个特效导致的这一情况呢? 解决办法: 右键计算机,高级系统设置-性能-设置-关闭”任务栏和开始菜单使用动画“和”最大化和最小化动态显示窗口“...
故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态 Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...
问题现象,具体如下所示: 故障分析: 一般来说,出现这种情况是因为电脑误删系统文件或者是系统文件被顽固木马破坏。 解决方法: 1、下载360安全卫士,找到里面的急救箱开始急救,然后进行修复,完成后重新启动; 2、下载瑞...
像Ubuntu这种开源系统,一般都自带有好多漂亮的字体,不过假如您想使用您熟悉的字体,可以通过在Ubuntu或其它Linux系统上安装字体,帮助用户在使用开源OS平台上更好的视图体验。 软件名称:Ubuntu 14.04 官方正式版软件大小:752MB更新时间:2014-05-07 Ubun...
下面小编以Windows 7 64位为例,介绍下密码是如何设置永不过期的。 1、在桌面上打开“开始”菜单,或者点击“Win+R”快捷键将“运行”对话框打开。 2、运行对话框打开后,在里面中输入“lusrmgr.msc”字符命令,就可以打开“本地用户和组程序”。...
Ubuntu挂载U盘问题 复制代码代码如下: 老是说special device /dev/sdb1 does not exist,无比郁闷 复制代码代码如下:#fdisk /dev/sda 复制代码代码如下: 是有个 这个咚咚。。。。 复制代码代码如下: 最后: 复制代码代码如下:...