如何使用ADO.NET将表值参数传递给存储过程?
在SQL Server中创建类型 :
CREATE TYPE [dbo].[MyDataType] As Table
( ID INT, Name NVARCHAR(50) )
创建过程 :
CREATE PROCEDURE [dbo].[MyProcedure]
( @myData As [dbo].[MyDataType] Readonly ) AS
BEGIN SELECT * FROM @myData END
在C#中创建DataTable :
DataTable myDataTable = new DataTable("MyDataType");
myDataTable.Columns.Add(“Name”, typeof(string)); myDataTable.Columns.Add(“Id”, typeof(Int32)); myDataTable.Rows.Add(“XYZ”, 1); myDataTable.Rows.Add(“ABC”, 2);
创建SQL参数 :
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = “@myData”; parameter.SqlDbType = System.Data.SqlDbType.Structured; parameter.Value = myDataTable; command.Parameters.Add(parameter);