我正在使用SQL Server 2008 Enterprise。我正在学习SQL Server存储过程的OUTPUT参数。例如,存储过程sp_add_jobschedule具有一个称为schedule_id的OUTPUT参数。
http://msdn.microsoft.com/en- us/library/ms366342.aspx
我的困惑是,好像可以为OUTPUT参数提供一个输入值并返回一个值,好像它具有INPUT和OUTPUT参数的行为吗?是否允许不为OUTPUT参数提供任何INPUT值(使其看起来像纯输出参数行为)?
这种混淆在一定程度上是合理的- 像Oracle这样的其他RDBMS确实具有存储过程参数,这些参数可以是IN(仅输入),OUT(仅输出)或INOUT(两种方式-“按引用传递”类型的参数)类型。
IN
OUT
INOUT
SQL Server在这里有点草率,因为它将参数标记为OUTPUT,但实际上,这意味着INPUT/ OUTPUT-它基本上仅意味着存储的proc有机会从该参数的调用中返回值。
OUTPUT
INPUT
所以,是的- 尽管它被称为OUTPUT参数,它是真正的性质转向INPUT/OUTPUT参数,而这些IN,INOUT,OUT像甲骨文不会在SQL Server中存在(在T-SQL)。