C# に文字列 (ID) の配列があります。
私はそれをsql-serverのプロシージャに送信し、それらのIDが配列で見つかったすべての行を複製したい(ただし、それらに新しいIDと名前を付けさせてください)。
次に、copyed_id、新しい id、新しい名前を挿入して、それを c# に返します。
例えば:
Ads_Table
adId | Name | Status | Date
------------------------------------------
2g3 | abc | 3 | 03.10
2g4 | xyz | 4 | 04.10
2g5 | 123 | 4 | 03.10
私が持っていると仮定します:
string[] adsIds = new string();
adsIds[0] = "2g3";
adsIds[1] = "2g5";
NewAdsDetails newAds = Duplicate_Ads(adsIds); // run the prosedure
テーブルは次のようになります。
Ads_Table
adId | Name | Status | Date
------------------------------------------
2g3 | abc | 3 | 03.10
2g4 | xyz | 4 | 04.10
2g5 | 123 | 4 | 03.10
gsd | abc_gsd | 3 | 03.10 // this ad was copied
hfs | 123_hfs | 4 | 03.10 // this ad was copied
新しい ID は NEWID() によって生成され、名前はコピーされた adId の名前 + '_' + 新しい広告の newId によって生成されました。
したがって、返されるテーブルには次が含まれます。
copiedId, newAdId, newName
--------------------------
[2g3, gsd, abc_gsd;
2g5, hfs, 123_hfs]
私は手順を作成しようとしました:
CREATE PROCEDURE [dbo].[Duplicate_Ads] @adsIds table(adId varchar(20))
AS
BEGIN
DECLARE @newAdsIds table(adId varchar(20))
DECLARE @newAdId NVARCHAR(100);
DECLARE @Ad_cursor CURSOR;
SET @Ad_cursor = CURSOR FOR
SELECT * FROM Ads_Table where adid in @AdsIds
OPEN @Ad_cursor;
FETCH NEXT FROM @Ad_cursor INTO @newAdsIds ;
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
@newAdId = NEWID();
INSERT INTO sensplit_ads values(@newAdId, Name + '_' + @newAdId, Status, date);
END
FETCH NEXT FROM @Ad_cursor INTO adId, @newAdId, Name + '_' + @newAdId;
END
CLOSE @Ad_cursor;
DEALLOCATE @Ad_cursor;
Return @newAdsIds;
END
繰り返しますが、プロシージャを書きたいと思います。
- 文字列の配列を取得します。
- ID が指定された配列で見つかったすべての広告を複製しますが、新しく記録された新しい ID と新しい名前を生成します。
copied_id
、new Id
、およびのテーブルを返しますnew Name
。
どんな助けでも大歓迎です!!