2012-03-30 40 views
1

可能重复:
Parameterizing an SQL IN clause?如何将多个唯一标识符传递到存储过程

嗨,我们怎样才能多uniqueidentifiers发送到存储过程。

例:

Create procedure showall 
(@empids uniqueidentifier(50)) 
as 
select * from emp where empid in (@empid) 

这样吗?

+0

随着分裂函数或表值的参数,很多dups; http://stackoverflow.com/questions/337704/parameterizing-an-sql-in-clause – 2012-03-30 13:15:16

+0

我想传递多个uniqueidentifier类型而不是字符串。可能吗? – jestges 2012-03-30 13:25:10

+0

是的,格式正确的字符串guid可以与uniqueidentifier – 2012-03-30 13:26:39

回答

0

多个参数可以作为逗号(或任何其他符号)分隔的字符串被传递,然后将内部PROC处理或作为table-valued parameter

2

作为迭已经提到的,可以使用一个表值参数。以下是如何使用表值参数对内联接进行传递的列表,从而相应地过滤列表。

create procedure showall 
    (
    @empids uniqueidentifier(50) 
    ,@myTableVariable mySchema.myTableType readonly 
    ) 
as 
    select 
     * 
    from 
     emp e 
     inner join @myTableVariable m 
     on e.empids = m.empids 

    --where 
    -- empid in (@empid) 

如果你从来没有使用表值参数,它可以有点混淆。您需要创建一个user defined table type。正如创建部分所示,一旦创建了表结构,就可以返回,然后将参数类型定义为表值参数。

create type mySchema.myTableName as table 
(empids uniqueidentifier) 

然后,您在第一个代码示例中的参数子句中引用它。希望这有助于我第一次使用它,但它肯定会很方便并减少应用程序的旅程。

相关问题