• C# 调用存储过程传入表变量作为参数


    首先在SQLServer定义一个自定义表类型:

    USE [ABC]
    GO
    
    CREATE TYPE [ABC].[MyCustomType] AS TABLE(
        [EmployeeId] [char](6) NOT NULL,
        [LastName] [varchar](30) NULL,
        [FirstName] [varchar](30) NULL
    --省略很多列
    )
    GO


    程序部分:

    static void Test()
            {
                //定义与表类型结构相同的DataTable
                DataTable dataTable = new DataTable();
                dataTable.Columns.Add(new DataColumn() { ColumnName = "EmployeeId", DataType = System.Type.GetType("System.String") });
                dataTable.Columns.Add(new DataColumn() { ColumnName = "LastName", DataType = System.Type.GetType("System.String") });
                dataTable.Columns.Add(new DataColumn() { ColumnName = "FirstName", DataType = System.Type.GetType("System.String") });
                //...此处省略很多行
    
                //插入数据行, 请注意不同类型的赋值, 这里应该根据实际情况添加很多行
                DataRow dataRow = dataTable.NewRow();
                dataRow["EmployeeId"] = "000001";
                dataRow["LastName"] = "Nick";
                dataRow["FirstName"] = "Yang";
                //此处省略插入很多行
                dataTable.Rows.Add(dataRow);
    
                string connStr = "Data Source=.;Database=ABC;user id=sa;password=***;Persist Security Info=True";
                SqlConnection conn = new SqlConnection(connStr);
                conn.Open();
    
                try
                {
                    using (SqlCommand cmd = new SqlCommand(@"MCU.存储过程名", conn))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        //关键是类型
                        SqlParameter parameter = new SqlParameter("@import", SqlDbType.Structured);
                        //必须指定表类型名
                        parameter.TypeName = "ABC.MyCustomType";
                        //赋值
                        parameter.Value = dataTable;
                        cmd.Parameters.Add(parameter);
                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    throw new SystemException("Failed to insert result route.", ex);
                }
                finally
                {
                    conn.Close();
                }
            }
  • 相关阅读:
    记一次MD5妙用
    go执行外部应用
    Go语言中的HTTP
    Go语言中的UDP应用
    Go学习
    Element-ui学习使用
    Vue学习
    BootCDNApi使用记录
    jquery.easypiechart.js简介
    jquery.gritter.js简介
  • 原文地址:https://www.cnblogs.com/xachary/p/3740612.html
Copyright © 2020-2023  润新知