以表值作为参数执行存储过程

时间:2011-08-31 07:26:42

标签: tsql

我创建自己的表类型

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 ????

2 个答案:

答案 0 :(得分:43)

<强> Look at this

你可以找到一个例子

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

答案 1 :(得分:1)

使用SELECT语句填充@data:

DECLARE @data ObjectList

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

EXEC GetData @data