嗨,我们怎样才能多uniqueidentifiers发送到存储过程。
例:
Create procedure showall
(@empids uniqueidentifier(50))
as
select * from emp where empid in (@empid)
这样吗?
嗨,我们怎样才能多uniqueidentifiers发送到存储过程。
例:
Create procedure showall
(@empids uniqueidentifier(50))
as
select * from emp where empid in (@empid)
这样吗?
多个参数可以作为逗号(或任何其他符号)分隔的字符串被传递,然后将内部PROC处理或作为table-valued parameter
作为迭已经提到的,可以使用一个表值参数。以下是如何使用表值参数对内联接进行传递的列表,从而相应地过滤列表。
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)
然后,您在第一个代码示例中的参数子句中引用它。希望这有助于我第一次使用它,但它肯定会很方便并减少应用程序的旅程。
随着分裂函数或表值的参数,很多dups; http://stackoverflow.com/questions/337704/parameterizing-an-sql-in-clause – 2012-03-30 13:15:16
我想传递多个uniqueidentifier类型而不是字符串。可能吗? – jestges 2012-03-30 13:25:10
是的,格式正确的字符串guid可以与uniqueidentifier – 2012-03-30 13:26:39