如何将数组参数传递给存储过程?
问题描述:
我有这些表:
我有一个像cat1,cat2,cat3,cat4
那样想传递给sql server存储过程的数组。
然后检查它们是否存在于PaperKeywors的表中。 如果是,则插入PKeyID
主题和PID
(例如PID = 1)至PaperTag
,如果没有返回它们。
我知道我必须使用TVP,并写在SQL代码这些:如何将数组参数传递给存储过程?
CREATE TYPE PaperKeywordsType AS TABLE
(PKeyword nvarchar(200) ,PKeyID int )
和:
Create PROCEDURE [dbo].[InsertPaperTag]
(@dt AS PaperKeywordsType READONLY , @PID int)
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.PaperTags(PID,PKeyID)
SELECT @PID,PaperKeywords.PKeyID FROM @dt tvp
inner join PaperKeywords on PaperKeywords.PKeyword = tvp.PKeyword
END
但它不是为我工作。为什么?