我正在试验表值参数 (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 的原因是能够跟踪从应用程序到数据库并返回的对象。