我有一个这样的表:
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# 代码执行此操作,但我想使用存储过程。
可能吗?
注意:我的英语不好,抱歉。
最佳答案
我建议将关键字作为表值参数传递。请参阅本文以了解更多信息 - Table-Valued Parameters .还有一个关于如何使用它的很好的 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
这将只插入关键字表中存在的值。
希望对您有所帮助!
关于c# - 使用存储过程将数组插入到sql表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510296/