【问题标题】:How to Passing array parameters to stored procedure in?如何将数组参数传递给存储过程?
【发布时间】:2017-01-01 03:42:26
【问题描述】:

我有这些表:

我有一个像cat1,cat2,cat3,cat4 这样的数组,它想要传递给sql server 存储过程。
然后检查它们是否存在于PaperKeywors 的表中。 如果是,则将主题的PKeyIDPID(例如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


但这对我不起作用。为什么?

【问题讨论】:

    标签: c# sql-server-2008 tsql


    【解决方案1】:

    从 C# 中,您需要使用值创建一个 DataTable 并将其传递给存储过程。请参阅此SO Post. 您还可以将值作为分隔字符串传递给存储过程,并使用 TSQL 中的函数将值转换为表。请参阅此post 了解一些示例。

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 1970-01-01
      • 2016-04-05
      • 2021-12-29
      • 1970-01-01
      • 2016-04-27
      相关资源
      最近更新 更多