zoukankan      html  css  js  c++  java
  • c# 三步递交模式调用同一个存储过程

    主要用于批量的sql操作:第一步创建中间表,第二步多次写数据到中间表,第三步 提交执行

    创建三步递交的存储过程:

    CREATE PROC usp_testsbdj
    @bz int=0,
    @name VARCHAR(100)=''
    AS
    
    IF(@bz=1)
    BEGIN
    CREATE TABLE ##temp(id VARCHAR(100),name VARCHAR(100))
    END
    ELSE IF(@bz=2)
    BEGIN
    IF EXISTS(SELECT 1 FROM ##temp )
    BEGIN
    SELECT 'F'
    END
    
    INSERT INTO ##temp
    ( id, name )
    VALUES ( NEWID(), -- id - varchar(10)
    @name -- name - varchar(100)
    )
    END
    ELSE
    BEGIN
    SELECT * FROM ##temp
    END
    SELECT 'T'

    封装方法:

    /// <summary>
    /// 支持同一个连接执行sql,用于三步递交,迭代返回每次执行结果
    /// </summary>
    /// <param name="strsqls"></param>
    /// <returns></returns>
    public IEnumerable<DataTable> YieldReturnDataTable(List<string> strsqls)
    {
    if (strsqls == null || strsqls.Count < 1)
    {
    yield return null;
    yield break;
    }
    using (var connection = new MySqlConnection(DbConnectionString))
    {
    connection.Open();
    foreach (string strsql in strsqls)
    {
    var ds = new DataTable();
    try
    {
    using (var cmd = new MySqlCommand(strsql, connection))
    {
    cmd.CommandTimeout = DbCommandTimeout;
    using (var dataAdapter = new MySqlDataAdapter(cmd))
    {
    dataAdapter.Fill(ds);
    }
    }
    }
    catch (MySqlException ex)
    {
    Tools.Debug(String.Format("执行异常语句:{0} ,执行数据库:{1} ,报错: {2}", strsql, DbConnectionString, ex.Message));
    Tools.Error(ex);
    yield break;
    }
    yield return ds;
    }
    }
    }
    
     

    调用方式:

    List<string> liststring = new List<string>();
    liststring.Add("exec usp_testsbdj 1");
    liststring.Add("exec usp_testsbdj 2,'李伟'");
    liststring.Add("exec usp_testsbdj '2,'王伟伟''");
    liststring.Add("exec usp_testsbdj 3");
    
    foreach (DataTable dt in YieldReturnDataTable(liststring))
    {
    string str = dt.Rows[0][0].ToString();
    if (str == "F")
    {
    return;
    }
    }

      

  • 相关阅读:
    MacOS下免密码ssh登陆
    七种网卡绑定模式详解
    dnsmasq一次成功的配置
    ceph存储引擎bluestore解析
    关于并发你真的了解吗?
    Web大规模高并发请求和抢购的解决方案
    centos6.6配置rsync+sersync实现实时同步分布式多客户端分发同步
    TCP慢启动,拥塞控制,ECN 笔记
    MFS文件系统的组成
    CentOS 6.5安装部署Zabbix监控系统
  • 原文地址:https://www.cnblogs.com/songconglai/p/11352987.html
Copyright © 2011-2022 走看看