一尘不染

使用ADO.NET传递表值参数

c#

如何使用ADO.NET将表值参数传递给存储过程?


阅读 325

收藏
2020-05-19

共1个答案

一尘不染

  1. 在SQL Server中创建类型

    CREATE TYPE [dbo].[MyDataType] As Table
    

    (
    ID INT,
    Name NVARCHAR(50)
    )

  2. 创建过程

    CREATE PROCEDURE [dbo].[MyProcedure]
    

    (
    @myData As [dbo].[MyDataType] Readonly
    )
    AS

    BEGIN
    SELECT * FROM @myData
    END

  3. 在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);

  4. 创建SQL参数

    SqlParameter parameter = new SqlParameter();
    

    parameter.ParameterName = “@myData”;
    parameter.SqlDbType = System.Data.SqlDbType.Structured;
    parameter.Value = myDataTable;
    command.Parameters.Add(parameter);

2020-05-19