0

ストアド プロシージャに 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") 

データベースには、以下に示すように1つのテーブルがあります。

テーブル名:UrlMapping

列:

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

UrlMappingこれらの複数のカンマ区切りの値をテーブルに挿入する方法を提案できますか?

4

1 に答える 1

2

これは 2 段階のプロセスです。

文字列を一連の一時テーブルに分割します: T-SQL: 文字列連結の反対 - 文字列を複数のレコードに分割する方法

行の番号付けに基づいてテーブルを結合し直し、データベースに挿入します。

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

これは代表的なクエリです。分割を実装し、Split 一時テーブルに挿入し、結合を拡張してすべての列をカバーする必要があります。

于 2013-03-23T09:48:34.897 に答える