C#将一张表传入存储过程

一、创建一个用户自定义表类型

CREATE TYPE [dbo].[Excel_HsCode] AS TABLE(
    [material_no] [varchar](100) NULL,
    [oldhs_code] [varchar](100) NULL,
    [newhs_code] [varchar](100) NULL,
    [manual_seqno] [int] NULL
)
GO

二、创建存储过程

create PROCEDURE [dbo].[Proc_UploadHsCode]
    @tb_data Excel_HsCode READONLY,
    @ResultLog varchar(100) OUTPUT
AS
BEGIN try
begin tran
    SET NOCOUNT ON
    declare @num int= (select count(1) from  @tb_data)
    SET NOCOUNT OFF
    set @ResultLog=CAST(@num as varchar);--返回传入的数据行数
commit tran
END try
begin catch
rollback tran
    set @ResultLog='-100';
end catch

三、调用存储过程

        SqlParameter[] para = {
                        new SqlParameter("@tb_data",SqlDbType.Structured),
                        new SqlParameter("@ResultLog",SqlDbType.VarChar,100)

                    };
        para[0].TypeName = "dbo.Excel_HsCode";
        para[0].Value = //你的数据,DataTable数据类型;
        para[1].Value = "-100";
        para[1].Direction = ParameterDirection.Output;//返回的值

        var result = db.Database.ExecuteSqlCommand("exec [dbo].[Proc_UploadHsCode] @tb_data,@ResultLog  output", para);
        var resultValues = para[1].Value.ToString();

 List转DataTable方法:https://www.cnblogs.com/work-code/p/15480663.html

posted @ 2021-10-29 15:26  亦承  阅读(162)  评论(0)    收藏  举报