使用存储过程将数组插入到 sql 的表中



我有一张类似的表:

keyword (table name)        
----------------    
kid   key   
----------------    
1     asp.net   
2     php   
3     C#‎   
4     vb

在WebForm页面中,我有一个文本框,用户可以插入如下:

asp.net,php,C#‎,vb,css

我必须将此字符串插入以下如下:

p-tag (table name)
----------------
pid  kid
----------------
1    1
1    2
1    3
1    4


我必须首先检查字符串中是否存在关键字中的这些单词。如果是,将它们插入p-tag表中。我可以使用C#代码执行此操作,但是我想使用存储过程。
有可能吗?
注意:我的英语很弱,对不起。

我建议将关键字作为表值参数传递。请参阅本文以了解有关它的更多信息 - 表值参数。关于如何使用它,还有一个很好的C#示例。然后,通过单个查询来完成所需的工作非常容易。首先为表值参数创建类型:

    CREATE TYPE dbo.TableTypeName AS TABLE
        ( keyName nvarchar(50) )

然后在这样的过程中使用它:

CREATE PROCEDURE sp_UpdateTags 
    (@tableParameter dbo.TableTypeName READONLY, @tagId INT)
AS
INSERT [p-tag](pid, kid)
SELECT @tagId, K.kid from @tableParameter tP
inner join [keyword] K on key = tP.keyName

这将仅插入关键字表中存在的值。

希望它有帮助!

最新更新