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

时间:2014-02-02 11:57:50

标签: c# asp.net sql-server tsql

我有一张这样的表:

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

在网页表单页面中,我有一个文本框,用户可以插入如下字符串:

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

我必须将此字符串插入另一个表中,如下所示:

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

我首先要检查字符串中的字是否存在于关键字中。如果是,请将它们插入到p-tag表中。 我可以使用C#代码执行此操作,但我想使用存储过程 有可能吗?
注意:我的英语很弱,抱歉。

1 个答案:

答案 0 :(得分:5)

我建议将关键字作为表值参数传递。请参阅此文章以了解有关它的更多信息 - Table-Valued Parameters。关于如何使用它还有一个很好的C#示例。然后通过单个查询完成所需的操作相当容易。首先为table-value参数创建一个类型:

    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

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

希望它有所帮助!