【问题标题】:Insert multiple columns with multiple values using stored procedure in SQL Server 2008使用 SQL Server 2008 中的存储过程插入具有多个值的多列
【发布时间】:2013-03-23 08:00:37
【问题描述】:

我们将 4 个参数传递给存储过程

@PageID,
@CompanyID,
@URL, 
@URLCode,

所有这些参数都包含逗号分隔的值

例子:

 @PageID contains ("1,2,3,4,5,6,7")
 @CompanyID contains ("10,20,30,40,50,60,70") 
 @URL contains ("u1,u2,u3,u4,u5,u6,u7")
 @URLCode contains ("c1,c2,c3,c4,c5,c6,c7") 

在数据库中,我有一张表,如下所述:

表名:UrlMapping

列:

MappingID (PK), 
PageID, 
CompanyID,
URL,
UrlCode

您能否建议如何在UrlMapping 表中插入这些多个逗号分隔值。

【问题讨论】:

    标签: sql-server-2008 stored-procedures csv


    【解决方案1】:

    这是一个两步过程。

    将字符串拆分为一组临时表: T-SQL: Opposite to string concatenation - how to split string into multiple records

    根据行编号将表重新连接在一起并插入数据库:

    INSERT INTO UrlMapping 
    (PageID, CompanyID)
    FROM
    SELECT PageID, CompanyID
    (
        SELECT id AS PageID, ROW_NUMBER() OVER (ORDER BY id) as PageRowNum
        FROM
        @SplitPageID
    ) AS SplitPageID
    INNER JOIN  
    (
        select id AS CompanyID, ROW_NUMBER() OVER (ORDER BY id) as CompanyRowNum
        FROM
        @SplitCompanyID
    ) AS SplitCompanyID
    ON
    SplitPageID.PageRowNum = SplitCompanyID.CompanyRowNum
    

    这是一个有代表性的查询,您需要实现拆分,插入到拆分临时表中,并扩展连接以覆盖所有列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 2017-10-03
      相关资源
      最近更新 更多