大家在学习存储过程这一章的时候,最容易产生疑问的就是存储过程的输入输出参数问题。
对于存储过程,我们可以把它看作是一个函数,当然它是不同于函数的。sqlServer中也有函数的概念。关于函数这里不作讨论。
存储过程可以用来处理复杂的业务处理,在存储过程中包含有数据操纵语句,流程控制语句(if while)。对数据库中的表进行增删改查。
存储过程可以带有参数,这个参数又分为输入参数和输出参数。定义如下
create proc myproc
@param1 int,
@param2 int output,
as
.........
上面的例子中@param1代表输入参数,@param2代表输出参数。如何来理解输入和输出。输入好说,就是在调用的时候给存储过程传递一个值,这个时候进行的是值传递。@param2是输出参数,当存储过程内部运算完成之后,会往@param2里面放入一个值,这个值如何被存储过程的调用者得到呢?其实在我们调用myproc时会用一个变量来接受由存储过程输出的值,如我们要调用上面的存储过程的话,需要这样:
declare @param
execute myproc 50,@param output
指明@param是用来接受存储过程输出的值。这个过程中我们可以把输出参数看作是引用传递,也就是说@param2,与@param公用同一个内存空间。而对于输入参数则可以看作是值传递