【问题标题】:Insert an array to sql's table with stored procedure使用存储过程将数组插入到 sql 表中
【发布时间】:2014-02-25 22:21:57
【问题描述】:

我有一张这样的桌子:

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

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

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

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

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


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

【问题讨论】:

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


    【解决方案1】:

    我建议将关键字作为表值参数传递。请参阅本文以了解更多信息 - 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
    

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

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多