2011-08-31 41 views
16

我创建自己的表型执行存储过程的表值参数

CREATE TYPE [dbo].[ObjectsList] AS TABLE(
[Id] [int] NOT NULL, 
PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)WITH (IGNORE_DUP_KEY = OFF) 
) 
GO 

,当我想通过这种类型的参数一样

CREATE PROCEDURE [dbo].[GetData](@DataIds ObjectsList READONLY) 

我应该如何通过它在 EXEC的GetData ????

回答

29

Look at this

你可以找到一个例子

DECLARE @data ObjectList 
INSERT @data (Id) VALUES (1) 
EXEC GetData @data 
1

要使用SELECT语句填充@data:

DECLARE @data ObjectList 

INSERT @data (Id) 
SELECT 
    Id 
FROM 
    <someDB>.<someSchema>.<someTable> 
    JOIN ... etc 
WHERE 
    ... etc 

EXEC GetData @data