OUT和INOUT参数之间有什么区别以及它与parameter_id的关系

时间:2014-08-10 17:24:09

标签: sql-server information-schema

首先,我理解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之间是否存在真正的区别?

1 个答案:

答案 0 :(得分:0)

在做了一些进一步的阅读后,我想我看到了答案:

来自sys-parameters上的ms文章:
包含接受参数的对象的每个参数的行。如果对象是标量函数,则还有一行描述返回值。该行的parameter_id值为0.

因此标记为“OUT”的所有参数在技术上都是“INOUT”,但是函数返回值的特殊情况会导致未命名的“OUT”参数。