我想编写一个 SQL Server 2005 存储过程,它将从用户表中选择并返回一些用户 ID 的用户记录,这些用户 ID 作为参数传递给存储过程。
这个怎么做 ?
我可以将用户 ID 作为以逗号分隔的字符串传递。这样我就可以使用
select *
from users
where userid in (userids)
例如。 : 我想选择id为5,6,7,8,9的记录
存储过程怎么写?
对于 SQL Server 2005,请查看 Erland Sommarskog 的优秀文章SQL Server 2005 中的数组和列表文章展示了如何在 SQL Server 2005 中处理列表和数组的一些技术(他还有另一篇关于 SQL Server 2000 的文章)。
如果您可以升级到 SQL Server 2008,则可以使用名为“表值参数”的新功能:
一、创建用户自定义表类型
CREATE TYPE dbo.MyUserIDs AS TABLE (UserID INT NOT NULL)
其次,在存储过程中使用该表类型作为参数:
CREATE PROC proc_GetUsers @UserIDTable MyUserIDs READONLY
AS
SELECT * FROM dbo.Users
WHERE userid IN (SELECT UserID FROM @UserIDTable)
查看具体信息here.
Marc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)