テーブル値パラメーター (TVP) と、C# コードからそれらを使用する方法を試しています。TVP の 1 つの特定の側面は、私に問題を引き起こしています: データのリストをストアド プロシージャに渡し、データがデータベースから戻ってきた後にそのリストを更新したい場合。
リスト内に含まれるサンプル クラスを次に示します。
public class Phone
{
int _phoneID;
string _phoneNumber;
Guid _correlationID;
}
このリストを TVP を使用するストアド プロシージャに渡す場合、_phoneID と _phoneNumber をデータベースに挿入し、挿入後、_correlationID に基づく _phoneID で電話のリストを更新するにはどうすればよいでしょうか?
サンプル テーブル、型、およびストアド プロシージャを次に示します。
Create Table PhoneTable
(
PhoneID int identity(1,1),
PhoneNumber varchar(20)
)
GO
Create Type PhoneType As Table
(
PhoneNumber varchar(20),
CorrelationID uniqueidentifier
)
GO
Create Procedure usp_Phone_Insert
@Input PhoneType ReadOnly
AS
Declare @Output Table (PhoneID int, PhoneNumber varchar(20))
Insert Phone (PhoneNumber)
Output
inserted.PhoneID,
inserted.PhoneNumber
Into @Output
Select
PhoneNumber
From
@Input
Select PhoneID, PhoneNumber From @Output
GO
相関 ID を使用する理由は、オブジェクトをアプリケーションからデータベースまで、またその逆方向に追跡できるようにするためです。