首先,我理解In,Out和InOut之间的理论差异。我能找到的问题都集中在术语的一般含义上,而不是我在这里寻找的细节。
我从sys.parameters中查询存储过程信息(因为我想在object_id上链接信息架构视图不支持)。我正在查看INFORMATION_SCHEMA.PARAMETERS视图以供参考,并注意到以下代码:
convert(nvarchar(10), CASE
WHEN c.parameter_id = 0 THEN 'OUT'
WHEN c.is_output = 1 THEN 'INOUT'
ELSE 'IN' END) AS PARAMETER_MODE,
所以我比开始时更不清楚 - parameter_id与此有什么关系?在SqlServer中OUT和INOUT之间是否存在真正的区别?
答案 0 :(得分:0)
在做了一些进一步的阅读后,我想我看到了答案:
来自sys-parameters上的ms文章:
包含接受参数的对象的每个参数的行。如果对象是标量函数,则还有一行描述返回值。该行的parameter_id值为0.
因此标记为“OUT”的所有参数在技术上都是“INOUT”,但是函数返回值的特殊情况会导致未命名的“OUT”参数。