【发布时间】:2017-07-15 20:57:27
【问题描述】:
希望传递用户 ID 列表以返回列表名称。我计划处理输出的名称(使用 COALESCE 或其他名称),但试图找到传递用户 ID 列表的最佳方式。 我的 sproc 的内脏看起来像这样:
create procedure [dbo].[get_user_names]
@user_id_list, --which would equal a list of incoming ID numbers like (5,44,72,81,126)
@username varchar (30) output
as
select last_name+', '+first_name
from user_mstr
where user_id in @user_id_list
传递@user_id_list 的值是我主要关心的问题。
【问题讨论】:
-
我不会传入 ID 列表,而是创建一个用户定义的表类型,将值插入其中,然后将该变量传递给 proc。然后你可以对桌子做一个
JOIN。 -
我同意表参数...其次我会使用字符串拆分器,作为最后的手段...动态 sql。刚刚发布的类似问题here
-
根据编程语言和 API,您可以将列表作为表值参数 (TVP) 传入。其他解决方案将根据您的 SQL Server 版本而有所不同。见sommarskog.se/arrays-in-sql.html。
-
这取决于你如何称呼它。请编辑您的问题并描述您如何称呼它。 (来自 C#?内部 SQL?报告工具?)。另外请具体说明版本。部分版本可以使用
string_split
标签: sql sql-server stored-procedures