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;
}
}
c# 三步递交模式调用同一个存储过程的更多相关文章
- 在PL/SQL中调用Oracle存储过程
存储过程 1 什么是存储过程? 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2 存储过程的参数模式 存储过程的参数特性: IN类型的参数 ...
- java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊
java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- SQL Server2005 表分区三步曲(zz)
前言 SQL Server 2005开始支持表分区,这种技术允许所有的表分区都保存在同一台服务器上.每一个表分区都和在某个文件 组(filegroup)中的单个文件关联.同样的一个文件/文件组可以容纳 ...
- 在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP
如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...
- Golang 用go-sql-driver 调用MySQL存储过程时的问题排查
今天在用go-sql-driver做MySQL driver调用MySQL的存储过程时遇到一个罕见的报错.本文对这个错误及其解做一个简单的总结. 1 问题描述 按照go中sql包提供的接口,应用层代码 ...
- VMware 三种网络模式的区别
VMware 三种网络模式的区别 VMware 三种网络模式的区别 我们首先说一下VMware的几个虚拟设备 VMnet0:用于虚拟桥接网络下的虚拟交换机 VMnet1:用于虚拟Host-Only网络 ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二: ...
随机推荐
- Oracle数据库---包
--根据员工号或员工姓名获取员工的信息--根据员工号或员工姓名删除员工的信息--创建包规范CREATE OR REPLACE PACKAGE overload_pkgIS FUNCTION get_i ...
- 影音播放器 Daum Potplayer v1.7.14804 美化便携版
PotPlayer 是一款由世界老牌的著名多媒体影音播放器软件 KMPlayer 的原创作者姜龙喜先生进入韩国多音软件公司后开发的新一代多媒体播放器作品.前者的优势在于内置了功能强大的视频及音频解码器 ...
- [最全算法总结]我是如何将递归算法的复杂度优化到O(1)的
相信提到斐波那契数列,大家都不陌生,这个是在我们学习 C/C++ 的过程中必然会接触到的一个问题,而作为一个经典的求解模型,我们怎么能少的了去研究这个模型呢?笔者在不断地学习和思考过程中,发现了这类经 ...
- Easy AR官方实例HelloARVideo无法播放视频,视频黑屏,只有声音----解决办法
在学习AR时,发现EasyAR的官方案例居然运行有问题,经过一整天的各种查找与实践,终于找出解决办法! 首先,识别图像 播放视频的实例只支持在手机运行,PC端是无法看出实际效果的. 其次,视频黑屏,只 ...
- python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)
简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...
- python笔记(2)--字符串
一.字符串 字符串是不可变序列,具有序列的公共操作方法,具体操作见python笔记(1)--序列(列表 元组 range) 1.创建字符串 单引号:'Hello , I am Logan ! ' 双引 ...
- secureCRT背景颜色
secureCRT是我们常用的linux远程登录软件,某些情况下我们安装的secureCRT工具可能默认背景颜色为白色,使用时很容易造成眼睛的疲劳,网上有些教程也只是修改当前登录窗口背景颜色,新的连接 ...
- spring boot 配置mybatis plus 控制台打印sql
spring boot 版本2.1.5 mybatis plus 版本3.1.1 aplication.properties中添加 logging.level.com.demo.system.mapp ...
- 数组指针&&指针数组
数组指针: 定义 int (*p)[n]; 占用内存中一个指针的存储空间 ()优先级高,首先说明p是一个指针,指向一个int型的一维数组,故名数组(的)指针.指向的一维数组的长度是n,也可以 ...
- winapi创建不能改变大小的窗口
HWND hWnd = CreateWindow( "myWindowClass", //窗口类的名字 "my first window", //窗口标题 // ...