我有一张这样的表:
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#代码执行此操作,但我想使用存储过程
有可能吗?
注意:我的英语很弱,抱歉。
答案 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
这将仅插入关键字表中存在的值。
希望它有所帮助!