| title | SqlDataRecord Object | ||
|---|---|---|---|
| description | In SQL Server CLR integration, stored procedures can use the SqlDataRecord class to send custom result sets to the client. | ||
| author | rwestMSFT | ||
| ms.author | randolphwest | ||
| ms.date | 12/27/2024 | ||
| ms.service | sql | ||
| ms.subservice | clr | ||
| ms.topic | reference | ||
| helpviewer_keywords |
|
[!INCLUDE SQL Server]
In the .NET common language runtime (CLR), the SqlDataRecord object represents a single row of data, along with its related metadata.
Managed stored procedures might send to the client result sets that aren't from a SqlDataReader. The SqlDataRecord class, along with SendResultsStart, SendResultsRow, and SendResultsEnd methods of the SqlPipe object, allows stored procedures to send custom result sets to the client.
For more information, see Microsoft.SqlServer.Server.SqlDataRecord.
The following example creates a new employee record and returns it to the caller.
[Microsoft.SqlServer.Server.SqlProcedure]
public static void CreateNewRecordProc()
{
// Variables.
SqlDataRecord record;
// Create a new record with the column metadata. The constructor
// is able to accept a variable number of parameters.
record = new SqlDataRecord(new SqlMetaData("EmployeeID", SqlDbType.Int),
new SqlMetaData("Surname", SqlDbType.NVarChar, 20),
new SqlMetaData("GivenName", SqlDbType.NVarChar, 20),
new SqlMetaData("StartDate", SqlDbType.DateTime) );
// Set the record fields.
record.SetInt32(0, 0042);
record.SetString(1, "Funk");
record.SetString(2, "Don");
record.SetDateTime(3, new DateTime(2005, 7, 17));
// Send the record to the calling program.
SqlContext.Pipe.Send(record);
}<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub CreateNewRecordVBProc ()
' Variables.
Dim record As SqlDataRecord
' Create a new record with the column metadata. The constructor is
' able to accept a variable number of parameters
record = New SqlDataRecord(New SqlMetaData("EmployeeID", SqlDbType.Int), _
New SqlMetaData("Surname", SqlDbType.NVarChar, 20), _
New SqlMetaData("GivenName", SqlDbType.NVarChar, 20), _
New SqlMetaData("StartDate", SqlDbType.DateTime))
' Set the record fields.
record.SetInt32(0, 42)
record.SetString(1, "Funk")
record.SetString(2, "Don")
record.SetDateTime(3, New DateTime(2005, 7, 17))
' Send the record to the calling program.
SqlContext.Pipe.Send(record)
End Sub