将system.guid列表作为参数传递给SQL2008 sproc

时间:2009-09-24 02:58:05

标签: sql vb.net tsql

我想通过传入一个system.guid列表并传入一个整数键列表来在SQL sproc中提取一组记录。

当然,我可以将guid ih放到字符串中,但问题是 - 如何引用测试值,以便它们被SQL识别为UID

本质上我是

DECLARE @pklist AS VARCHAR(1000)

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

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

SELECT * from dbo.members WHERE members.cpk IN(@pklist)

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

尝试使用整数键列表执行此操作时,问题是该值被视为字符串的一部分而不是强制转换为整数

似乎从传入的字符串的解析版本创建一个表,然后执行JOIN也可以实现我所需要的,但是为此挣扎了T-SQL语法。

基本上 - 将列表(T)传入sproc并获取记录集

所有指导意见表示赞赏。

Charles Hankey

(同时指导为什么我的完全有效的电子邮件地址都不可接受通知 - 让它在个人资料中设置)

1 个答案:

答案 0 :(得分:1)

SQL Server 2008为这种情况引入了Table-Valued Parameters。仔细阅读那篇文章。