c# 三步遞交模式調用同一個存儲過程

来源:https://www.cnblogs.com/songconglai/archive/2019/08/14/11352987.html
-Advertisement-
Play Games

主要用於批量的sql操作:第一步創建中間表,第二步多次寫數據到中間表,第三步 提交執行 創建三步遞交的存儲過程: CREATE PROC usp_testsbdj@bz int=0,@name VARCHAR(100)=''AS IF(@bz=1)BEGIN CREATE TABLE ##temp( ...


主要用於批量的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;
}
}

 

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 20萬的慢慢會實現的吧,hhh unittest框架,我就不在介紹了,百度有很詳細的介紹。 我們只要瞭解: 1、unittest是單元測試框架 2、它提供用例組織與執行:在實際工作中案例可能有上百條,我們就需要進行用例的組織以及規範,增強代碼的可維護性等 3、它提供豐富的比較方法:相等\不相等,包含 ...
  • 第十節 一、函數進階 動態參數 *a r g s —— 聚合位置參數,動態位置參數 預設返回的是tuple元組 def eat(*args): # 函數的定義階段 *聚合(打包) print(args) # tuple print(*args) # 函數體中的 * 打散(解包)eat(*args) ...
  • 11.38 css三大特性 11.39 字體屬性 1、font-weight:文字粗細(字重) 2、font-style:文字風格 3、font-size:文字大小 4、font-family:文字字體 註意: 1、設置的字體必須是用戶電腦里已經安裝的字體,瀏覽器會使用它可識別的第一個值。 2、如果 ...
  • 今年在面試的時候被問到單點登錄的知識,當時支支吾吾不知該如何作答,於是面試失敗。回到住所便開始上網查找資料,但苦於難於找到詳盡的demo,總是無法入門。又由於我正在學習瞭解asp.net core,裡面正好有登錄驗證方面的東西,待我探究之,以求入門。 1:新建asp.net core 項目,將身份驗 ...
  • 代碼: <RichTextBox CaretBrush="#fff" Background="Transparent" BorderThickness="0"> <FlowDocument FontSize="16" Foreground="#fff"> <Paragraph LineHeight= ...
  • 8月7日微軟在官方博客發起了一次關於.NET桌面和移動開發的調查問卷,直到今天看博客才知道。這次調查的重點是關於.NET桌面開發技術的跨平臺,於是我喜大普奔,奔走相告,希望有這方面需求的朋友們都能去參與這份調查問卷,如果將來微軟推出了跨平臺的.NET桌面框架,這裡邊也有我們的一份力量! Callin ...
  • 3.7 集合 ( set ) 3.7.1 集合的表示 ​ 集合存的數據都是不可變類型(可哈希值)等於字典的key值 3.7.2 集合的常用功能 add 添加 同列表的append discard 刪除 pop 隨機刪 remove 刪除指定的值 uptate 批量添加 3.7.3關係運算 交集 in ...
  • 一、NPOI組件導入 右鍵項目菜單,“管理NuGet程式包” 直接搜索“NPOI”即會出現列表,下載第一個進行安裝即可 安裝完成後項目引用會出現以下幾項 二、基礎使用 添加引用 Excel操作開始 文件導出 三、樣式及單元格操作 單元格合併 文件的詳細信息設置 四、Excel文件讀取 讀取完畢之後, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 插件化的需求主要源於對軟體架構靈活性的追求,特別是在開發大型、複雜或需要不斷更新的軟體系統時,插件化可以提高軟體系統的可擴展性、可定製性、隔離性、安全性、可維護性、模塊化、易於升級和更新以及支持第三方開發等方面的能力,從而滿足不斷變化的業務需求和技術挑戰。 一、插件化探索 在WPF中我們想要開 ...
  • 歡迎ReaLTaiizor是一個用戶友好的、以設計為中心的.NET WinForms項目控制項庫,包含廣泛的組件。您可以使用不同的主題選項對項目進行個性化設置,並自定義用戶控制項,以使您的應用程式更加專業。 項目地址:https://github.com/Taiizor/ReaLTaiizor 步驟1: ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • Channel 是乾什麼的 The System.Threading.Channels namespace provides a set of synchronization data structures for passing data between producers and consume ...
  • efcore如何優雅的實現按年分庫按月分表 介紹 本文ShardinfCore版本 本期主角: ShardingCore 一款ef-core下高性能、輕量級針對分表分庫讀寫分離的解決方案,具有零依賴、零學習成本、零業務代碼入侵適配 距離上次發文.net相關的已經有很久了,期間一直在從事java相關的 ...
  • 前言 Spacesniffer 是一個免費的文件掃描工具,通過使用樹狀圖可視化佈局,可以立即瞭解大文件夾的位置,幫助用戶處理找到這些文件夾 當前系統C盤空間 清理後系統C盤空間 下載 Spacesniffer 下載地址:https://spacesniffer.en.softonic.com/dow ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • 一、ReZero簡介 ReZero是一款.NET中間件 : 全網唯一開源界面操作就能生成API , 可以集成到任何.NET6+ API項目,無破壞性,也可讓非.NET用戶使用exe文件 免費開源:MIT最寬鬆協議 , 一直從事開源事業十年,一直堅持開源 1.1 純ReZero開發 適合.Net Co ...
  • 一:背景 1. 講故事 停了一個月沒有更新文章了,主要是忙於寫 C#內功修煉系列的PPT,現在基本上接近尾聲,可以回頭繼續更新這段時間分析dump的一些事故報告,有朋友微信上找到我,說他們的系統出現了大量的http超時,程式不響應處理了,讓我幫忙看下怎麼回事,dump也抓到了。 二:WinDbg分析 ...
  • 開始做項目管理了(本人3年java,來到這邊之後真沒想到...),天天開會溝通整理需求,他們講話的時候忙裡偷閑整理一下常用的方法,其實語言還是有共通性的,基本上看到方法名就大概能猜出來用法。出去打水的時候看到外面太陽好好,真想在外面坐著曬太陽,回來的時候好兄弟三年前送給我的鍵盤D鍵不靈了,在打"等待 ...