SQL Server存储过程能否同时使用表值参数与其他参数?
SQL Server存储过程混合表值参数与普通参数的问题
有评论指出我对表值参数的括号使用有误,我附上微软文档页面的截图:
截图里明确显示了该用法的括号,而且我的存储过程不加括号就无法通过编译。
我在SQL Server 2017的存储过程中尝试同时使用表值参数和其他普通参数,但似乎这种混合使用的方式不被支持——尽管微软官方文档的「表值参数的限制」章节里并没有列出这条限制。想请大家帮忙确认:这确实是SQL Server的限制,还是我的操作哪里出错了?
create type IntegerList as TABLE (i int); -- 此语法无效: create proc Test @foo char(1), @idlist dbo.IntegerList READONLY as begin <snip> end
我发现表值参数必须用括号包裹:
-- 此语句执行成功 create proc Test (@idlist dbo.IntegerList READONLY) as begin <snip> end
但如果我尝试在表值参数之前或之后插入其他普通参数,就会出现语法错误:
-- 此语句出现语法错误 create proc Test @foo char(1), (@idlist dbo.IntegerList READONLY) as begin <snip> end
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

