首頁 資料庫 mysql教程 将DataTable作为存储过程参数的用法

将DataTable作为存储过程参数的用法

Jun 07, 2016 pm 03:15 PM
datatable 參數 儲存 比較 用法 過程

比较新奇的 用法 。 最近工作中写了几个 存储 过程 ,需要向 存储 过程 中传递字符串,因为 SQL Server 2000 中没有内置类于 split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个 Liststring 中,再转化为字符串传给 存储 过程 ,很是麻烦

比较新奇的用法

最近工作中写了几个存储过程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于 split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个List中,再转化为字符串传给存储过程,很是麻烦。今天看了下SQL Server 2008的新特性,发现有表变量的使用,及其将DataTable作为参数用法,就尝试了一下,简单谈谈心得。

 示例代码下载

 

一、测试环境

1Windows Server 2008 R2 DataCenter

2Visual Studio 2008 Team System With SP1

3SQL Server 2008 Enterprise Edition With SP1

由于是SQL Server 2008新特性,所以只能用2008

 

 二、测试概述

测试项目很简单,就是添加新用户

 

 

三、准备数据

1、建立数据库、表、类型、存储过程

 

复制代码

复制代码

代码

 1 IF NOT EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('Users'AND OBJECTPROPERTY(id, N'IsUserTable'= 1)
 2 BEGIN
 3  CREATE TABLE dbo.Users
 4  (
 5   UserID INT IDENTITY(-1-1NOT NULL,
 6   UserName VARCHAR(20NOT NULL,
 7   UserPass VARCHAR(20NOT NULL,
 8   Sex BIT NULL,
 9   Age SMALLINT NULL,
10   CONSTRAINT PK_Users_UserID PRIMARY KEY(UserID)
11  )
12 END
13 IF NOT EXISTS(SELECT * FROM sys.table_types WHERE name = 'UserTable' AND is_user_defined = 1)
14 BEGIN
15  CREATE TYPE UserTable AS TABLE
16  (
17   UserName VARCHAR(20NOT NULL,
18   UserPass VARCHAR(20NOT NULL,
19   Sex BIT NULL,
20   Age SMALLINT NULL
21  )
22 END
23 GO
24 

复制代码

复制代码

复制代码

复制代码

代码

 1 IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('sp_InsertSingleUser'AND OBJECTPROPERTY(id, N'IsProcedure'= 1)
 2 BEGIN
 3     DROP PROCEDURE dbo.sp_InsertSingleUser
 4 END
 5 GO
 6 CREATE PROCEDURE dbo.sp_InsertSingleUser
 7 (
 8     @User UserTable READONLY
 9 )
10 AS
11 
12 SET XACT_ABORT ON
13 BEGIN TRANSACTION
14 
15 INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)
16 SELECT UserName, UserPass, Sex, Age FROM @User
17 
18 COMMIT TRANSACTION
19 SET XACT_ABORT OFF
20 GO

复制代码

复制代码

前台搭建好表单,后台主要是一个函数:

代码

 1     public void fnInsertSingleUser(DataTable v_dt)
 2     {
 3         try
 4         {
 5             SqlConnection cn = new SqlConnection(CONN);
 6             SqlCommand cmd = cn.CreateCommand();
 7             cmd.CommandType = CommandType.StoredProcedure;
 8             cmd.CommandText = @"sp_InsertSingleUser";
 9             SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
10 
11             DataSet ds = new DataSet();
12             SqlDataAdapter da = new SqlDataAdapter(cmd);
13             da.Fill(ds);
14         }
15         catch (Exception ex)
16         {
17             throw ex;
18         }
19     }

  点击【添加】按钮时调用存储过程。测试是完成了

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
小米14 Pro怎麼開啟nfc功能? 小米14 Pro怎麼開啟nfc功能? Mar 19, 2024 pm 02:28 PM

現今手機的效能和功能越來越強大,幾乎所有手機都配備了便利的NFC功能,方便用戶進行行動支付和身分認證。然而,有些小米14Pro的用戶可能不清楚如何啟用NFC功能。接下來,讓我詳細向大家介紹一下。小米14Pro怎麼開啟nfc功能?步驟一:打開手機的設定選單。步驟二:找到並點選「連接和分享」或「無線和網路」選項。步驟三:在連接和共享或無線和網路選單中,找到並點擊「NFC和付款」。步驟四:找到並點選「NFC開關」。一般情況下,預設是關閉的狀態。步驟五:在NFC開關頁面上,點選開關按鈕,將其切換為開啟狀

iPhone 16 Pro CAD 圖曝光 加入第二個新按鍵 iPhone 16 Pro CAD 圖曝光 加入第二個新按鍵 Mar 09, 2024 pm 09:07 PM

iPhone16Pro的CAD檔案已經曝光,設計與先前的傳聞一致。去年秋天,iPhone15Pro新增了Action按鈕,而今年秋天,Apple似乎計劃對這款硬體的尺寸進行微小的調整。加入Capture按鈕據傳言,iPhone16Pro可能會新增第二個新按鈕,這將是繼去年之後連續第二年增加新按鈕。傳聞指出新的Capture按鈕將被設定在iPhone16Pro的右下側,這項設計可望讓相機控制更加便捷,同時也能讓Action按鈕用於其他功能。這個按鈕將不再只是一個普通的快門按鈕。關於相機,從目前iP

華為 Pocket2怎麼隔空刷抖音? 華為 Pocket2怎麼隔空刷抖音? Mar 18, 2024 pm 03:00 PM

隔空滑動螢幕是華為的一項功能,在華為mate60系列中可以說是備受好評,這個功能是通過利用手機上的激光感應器和前置攝像頭的3D深感攝像頭,來完成一系列不需要觸碰螢幕的功能,比如說隔空刷抖音,但華為Pocket2該要怎麼隔空刷抖音呢?華為Pocket2怎麼隔空截圖? 1.開啟華為Pocket2的設定2、然後選擇【輔助功能】。 3.點選打開【智慧感知】。 4.打開【隔空滑動螢幕】、【隔空截圖】、【隔空按壓】開關就可以了。 5.使用的時候,需要再距離螢幕20~40CM處,張開手掌,待螢幕上出現手掌圖標,

WPS Word怎麼設定行距讓文件更工整 WPS Word怎麼設定行距讓文件更工整 Mar 20, 2024 pm 04:30 PM

WPS是我們常用的辦公室軟體,在進行長篇文章的編輯時,常常會因為字體太小而看不清楚,所以會對字體和整個文件進行調整。例如:把文件進行行距的調整,會讓整個文件變得非常清晰,我建議各位小夥伴們都要學會這個操作步驟,今天就分享給大家,具體的操作步驟如下,快來看一看!開啟要調整的WPS文字文件,在【開始】選單中找到段落設定工具欄,你會看到行距設定小圖示(如圖中紅色線圈所示)。 2.點選行距設定右下角的小倒三角形,會出現對應的行距數值,可以選擇1~3倍行距(如圖箭頭所示)。 3.或者點選滑鼠右鍵點擊段落,就會出

TrendX 研究院:Merlin Chain 計畫分析及生態盤點 TrendX 研究院:Merlin Chain 計畫分析及生態盤點 Mar 24, 2024 am 09:01 AM

根據3月2日數據統計,比特幣二層網路MerlinChain總TVL已達30億美元。其中比特幣生態資產佔比達90.83%,包括價值15.96億美元的BTC以及4.04億美元的BRC-20資產等。上一個月,MerlinChain在開啟質押活動14天內,其TVL總額就已經達到了19.7億美元,超過了去年11月份上線也是最近同樣引人注目的Blast。 2月26日,MerlinChain生態內的NFT總價值超過了4.2億美元,成為除以太坊以外NFT市值最高的公鏈項目。項目簡介MerlinChain是OKX支

C++ 函式參數型別安全檢查 C++ 函式參數型別安全檢查 Apr 19, 2024 pm 12:00 PM

C++參數類型安全檢查透過編譯時檢查、執行時間檢查和靜態斷言確保函數只接受預期類型的值,防止意外行為和程式崩潰:編譯時類型檢查:編譯器檢查類型相容性。運行時類型檢查:使用dynamic_cast檢查類型相容性,不符則拋出異常。靜態斷言:在編譯時對型別條件進行斷言。

Ubuntu上的Git安裝流程 Ubuntu上的Git安裝流程 Mar 20, 2024 pm 04:51 PM

Git是一個快速、可靠、適應性強的分散式版本控制系統。它旨在支援分散式的非線性工作流程,使其成為各種規模的軟體開發團隊的理想選擇。每個Git工作目錄都是一個獨立的儲存庫,具有所有更改的完整歷史記錄,並且能夠追蹤版本,即使沒有網路存取或中央伺服器。 GitHub是託管在雲端的Git儲存庫,它提供了分散式修訂控制的所有功能。 GitHub是Git的儲存庫,託管在雲端。與作為CLI工具的Git不同,GitHub有一個基於Web的圖形使用者介面。它用於版本控制,這涉及與其他開發人員協作,並追蹤隨時間推移對腳本和

C語言與PHP的區別及比較分析 C語言與PHP的區別及比較分析 Mar 20, 2024 am 08:54 AM

C語言與PHP的差異及比較分析C語言和PHP都是常見的程式語言,但它們在許多方面有著明顯的差異。本文將對C語言和PHP進行比較分析,並透過具體的程式碼範例來說明它們之間的差異。一、語法和用途:C語言:C語言是一種過程導向的程式語言,主要用於系統級程式設計和嵌入式開發。 C語言的語法相對較為簡潔和底層,能夠直接操作內存,具有高效性和靈活性。 C語言強調程式設計師對程式的完全

See all articles