我有这些表:
我有一个像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
但它对我不起作用。为什么呢?