我正在試驗表值參數(TVP)以及如何從C#代碼使用它們。 TVP的一個特定方面給我帶來了麻煩:將數據列表傳遞給存儲過程,並希望在數據從數據庫返回後更新該列表。保留未插入數據的記錄
這裏將被包含在列表內的樣品類:
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是用於跟蹤的對象從應用程序向數據庫和背部一路的能力。
我想你會需要添加'CorrelationId'到'Phone'表,如果你想要的'output'子句來提供匹配的「PhoneID」/「CorrelationId」值。或者,如果電話號碼始終爲唯一_,則可以在'PhoneNumber'上使用'內部連接'在'插入'後匹配它們。 – HABO 2013-04-10 03:27:11