根据此博客,函数或存储过程的参数如果不是OUTPUT
参数,则本质上是按值传递的,如果它们是参数,则基本上被视为按引用传递的更安全版本OUTPUT
。
起初我认为强制声明 TVP 的目的READONLY
是向开发人员明确表示 TVP 不能用作OUTPUT
参数,但必须有更多的进展,因为我们不能将非 TVP 声明为READONLY
. 例如以下失败:
create procedure [dbo].[test]
@a int readonly
as
select @a
Run Code Online (Sandbox Code Playgroud)
消息 346,级别 15,状态 1,过程测试
参数“@a”不能声明为 READONLY,因为它不是表值参数。
OUTPUT
出于某种原因不希望 TVP 成为参数有关?