MySQL 声明变量及存储过程分析
声明变量
设置全局变量
set@a='一个新变量';
在函数和储存过程中使用的变量declear
declearaintunsigneddefault1;
这种变量需要设置变量类型而且只存在在begin..end这段之内
select..into.. 直接将表内内容赋值到指定变量当中
selectname,bidinto@a,@bfrombanklimit1;
要注意一点就是变量名不能和字段名一致
存储过程
存储过程将一段通用的操作封装在一起这样再不同平台都可以公用了
储存过程没有返回值,而且不能sql语句调用,只能是call调用,而且不返回结果集,执行就执行了
要注意的是在储存过程中进行sql语句要用到;这个系统默认结束符要重新设置成别的,不然在写过程的一半系统就错认程序为终止继而报错
改变结束命令符为$
delimiter$+回车或者简写成\d$+回车
显示所有存储过程
showprocedurestatus;
删除指定存储过程
dropprocedure过程名;
存储过程演示'
\d$1createprocedureyanshi(inargtinyint) begin declareagetinyintdefault0; setage=arg; ifage<20then select'小于20的数'; elseifage>20then select'大于20的数'; endif; end $ //调用过程 set@num=12$ callyanshi(@num)$ callyanshi(21)$
判断输入到存储过程中的数字属于哪个阶段
在存储过程中传参分in,out,inout三种
in可以输出从外部传入的变量不会改变传进变量本来的值
createprocedurea(inidint) begin selectid; setid=100; end $ set@id=1$ calla(@id)$//输出1即从外部传进来的@id的值 select$id$//输出1说明存储过程中没有改变传进的值
out不能输出从外部传进的值 会改变传进变量本来的值
createprocedureb(outidint) begin selectid; setid=100; end $ set@id=1$ callb(@id)$//输入null select@id$//输出100
inout就是又能输出传入变量又能改变传入变量咯
下面是检验你电脑硬件性能的时候了
还记得当年的bank表吗?就是他保留住然后执行以下命令:
createprocedureaddbank() begin declareiintdefault0; seti=5000000; whilei>0do insertintobank(name)values(i); seti=i-1; endwhile; end $ calladdbank()$
祝你好运
总结
以上就是本文关于MySQL声明变量及存储过程分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:几个比较重要的MySQL变量 MySQLprepare原理详解 ORACLESQL语句优化技术要点解析等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对毛票票网站的支持!