2009-09-24 79 views
1

我想通过传入一个system.guid的列表并传递一个整数键列表来在SQL sproc中拉一组记录。将system.guid的列表作为参数传递给SQL2008 sproc

我可以把GUID的ihto一个字符串,当然,但问题是 - 我怎么引用的测试值,使他们通过SQL

公认的UID在本质上我是

DECLARE @pklist为varchar(1000)

- 这看起来像“ '45F4AE2A-D27C-D711-83FD-0008C7FA9683', 'EC824D02-D37C-D711-83FD-0008C7FA9683','BA8E4D02-D37C-D711-83FD -0008C7FA9683'“从vb.net的execsql中出来 - 我认为:-)但它看起来需要看起来像

从dbo.members WHERE构件3210

SET @pklist = '45F4AE2A-D27C-D711-83FD-0008C7FA9683,EC824D02-D37C-D711-83FD-0008C7FA9683,BA8E4D02-D37C-D711-83FD-0008C7FA9683'

SELECT *。 cpk IN(@pklist)

这只会返回匹配字符串中第一个UID的记录。有什么我可以包装一个t-sql VARCHAR字符串,所以每个GUID将被清楚地看到?

在试图用整数密钥的列表要做到这一点,问题是该值被视为字符串的一部分,而不是强制转换为整数

这似乎从一个解析版本创建表传入的字符串然后做一个JOIN就可以完成我所需要的东西,但是却为此而苦苦挣扎。

所以基本上 - 传递(的T)的列表到一个存储过程,并得到一个记录集

感谢所有指导。

查尔斯·汉基

-

回答

1

SQL Server 2008的只是这种情况的介绍Table-Valued Parameters(也为什么既不是我完全有效的电子邮件地址是在通知可以接受的引导,它在配置文件中设置) 。阅读该文章。

+0

谢谢你,马特,这正是我所需要的,并且带领我第一次使用SQL2008这个令人难以置信的强大功能。 我确实看到它在某处提到任何iEnumerable都可以通过,但我并不清楚这一点。试图将一个List(OF System.Guid)传递给一个列表模式,如果我首先将列表写入数据表,但该列表不喜欢列表。我怀疑我可能会误解一些东西,所以你可以摆脱任何光线,将不胜感激 同时 - 传递一个数据表作为参数是大! :-) – 2009-09-25 14:32:54