日期:2014-05-16 浏览次数:20825 次
1、参数分类
参数,同编程一样,MySql中存储过程也可以带参数,前面的例子中我们没有使用参数,在下面的例子中我们将使用到参数;MySql的参数分为三类:IN、OUT、INOUT,即使是字面上这三种类型的参数也很好理解:
——IN:这是个默认的类型,也就是如果参数没指定类型的话,那么默认就是IN类型了,这种参数主要是传递进去的值,这个值提供给存储过程使用,另外存储过程对其做的改变不会对传入的参数发生作用。
——OUT:这个主要是存储过程要传递出去的值,也就是存储过程给你将它改变,并且传回去给调用它的程序。
——INOUT:则把上面两个的特点合在一起了,即可以传递值给存储过程使用,同时存储过程也可以改变这个值在传给调用它的程序。
2、参数定义
参数的定义如下:
MODE param_name param_type(param_size);
这里MODE可以是IN、OUT、INOUT;param_name就是参数名称;param_type则是类型。当然要注意的是名字不能和表格里的字段重名。
看看下面的使用例子:
这个例子里面,我们对存储过程传入了一个参数,这里参数是个字符串,我们希望通过这个存储过程来列出products表格中name字段中包含有传入的字符串的记录。这里数据主要用途就是传给存储过程使用,所以使用IN。下面是对应的执行结果:
注意到传递给了GetAll这个存储过程一个数据为“ca”的参数
在这个基础上我们把记录数作为存储过程输出给外部的数据来看一下OUT的使用。
上面把记录数保持到输出参数 totalNum中。
这里使用一个会话变量作为输出参数,存储过程处理后,保持记录速到@totalRecords中。然后我们运行select @totalRecords,输出为2。