当前第2页 返回上一页
1、in输入参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | mysql> delimiter $$
mysql> create procedure in_param(in p_in int) -> begin -> select p_in; -> set p_in=2; -> select P_in; -> end $$
mysql> delimiter ;
mysql> set @p_in=1;
mysql> call in_param(@p_in);+------+
| p_in |
+------+
| 1 |
+------+
+------+
| P_in |
+------+
| 2 |
+------+mysql> select @p_in;+-------+
| @p_in |
+-------+
| 1 |
+-------+
|
#以上可以看出,p_in在存储过程中被修改,但并不影响@p_id的值,因为前者为局部变量、后者为全局变量。
2、out输出参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | mysql> delimiter
mysql> set @p_out=1;
mysql> call out_param(@p_out);+-------+
| p_out |
+-------+
| NULL |
+-------+ #因为out是向调用者输出参数,不接收输入的参数,所以存储过程里的p_out为null+-------+
| p_out |
+-------+
| 2 |
+-------+mysql> select @p_out;+--------+
| @p_out |
+--------+
| 2 |
+--------+ #调用了out_param存储过程,输出参数,改变了p_out变量的值
|
3、inout输入参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | mysql> delimiter $$
mysql> create procedure inout_param(inout p_inout int) -> begin -> select p_inout; -> set p_inout=2; -> select p_inout; -> end -> $$
mysql> delimiter ;
mysql> set @p_inout=1;
mysql> call inout_param(@p_inout);+---------+
| p_inout |
+---------+
| 1 |
+---------+
+---------+
| p_inout |
+---------+
| 2 |
+---------+mysql> select @p_inout;+----------+
| @p_inout |
+----------+
| 2 |
+----------+
|
#调用了inout_param存储过程,接受了输入的参数,也输出参数,改变了变量
注意:
①如果过程没有参数,也必须在过程名后面写上小括号
例:CREATE PROCEDURE sp_name ([proc_parameter[,...]]) ……
②确保参数的名字不等于列的名字,否则在过程体中,参数名被当做列名来处理
强烈建议:
>输入值使用in参数;
>返回值使用out参数;
>inout参数就尽量的少用。
以上就是mysql如何创建存储过程的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
如何通过ssh连接mysql数据库?
mysql如何查询30天内的数据
mysql执行过程以及查询缓存的详细介绍
在mysql中的explain中的using where和using index
大数据学习之二 mysql进阶
mysql如何删除第一行数据
对mysql配置参数 my.inimy.cnf的详细解析
详解mysql中url时区的陷阱该如何规避
mysql汇总和分组数据
mysql是什么的缩写?
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » mysql如何创建存储过程