將DataTable作為存儲過程參數(shù)的用法實例詳解_Mssql數(shù)據(jù)庫教程
推薦:獲取SQL Server表字段的各種屬性實例代碼下面的語句將實現(xiàn)獲取SQL Server表字段的各種屬性,感興趣的朋友可以參考下哈,希望對你有所幫助
最近工作中寫了幾個存儲過程,需要向存儲過程中傳遞字符串,因為SQL Server 2000中沒有內(nèi)置類似于 split 的函數(shù),只好自己處理,將前臺數(shù)據(jù)集中的一列用逗號拆分存到一個List<string>中,再轉(zhuǎn)化為字符串傳給存儲過程,很是麻煩。今天看了下SQL Server 2008的新特性,發(fā)現(xiàn)有表變量的使用,及其將DataTable作為參數(shù)的用法,就嘗試了一下,簡單談?wù)勑牡谩?一、測試環(huán)境
1、Windows Server 2008 R2 DataCenter
2、Visual Studio 2008 Team System With SP1
3、SQL Server 2008 Enterprise Edition With SP1
由于是SQL Server 2008新特性,所以只能用2008。
二、測試概述
測試項目很簡單,就是添加新用戶
三、準(zhǔn)備數(shù)據(jù)
1、建立數(shù)據(jù)庫、表、類型、存儲過程
復(fù)制代碼 代碼如下:www.hl5o.cn
IF NOT EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('Users') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE dbo.Users
(
UserID INT IDENTITY(-1, -1) NOT NULL,
UserName VARCHAR(20) NOT NULL,
UserPass VARCHAR(20) NOT NULL,
Sex BIT NULL,
Age SMALLINT NULL,
CONSTRAINT PK_Users_UserID PRIMARY KEY(UserID)
)
END
IF NOT EXISTS(SELECT * FROM sys.table_types WHERE name = 'UserTable' AND is_user_defined = 1)
BEGIN
CREATE TYPE UserTable AS TABLE
(
UserName VARCHAR(20) NOT NULL,
UserPass VARCHAR(20) NOT NULL,
Sex BIT NULL,
Age SMALLINT NULL
)
END
GO
復(fù)制代碼 代碼如下:www.hl5o.cn
IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID('sp_InsertSingleUser') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
DROP PROCEDURE dbo.sp_InsertSingleUser
END
GO
CREATE PROCEDURE dbo.sp_InsertSingleUser
(
@User UserTable READONLY
)
AS
SET XACT_ABORT ON
BEGIN TRANSACTION
INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)
SELECT UserName, UserPass, Sex, Age FROM @User
COMMIT TRANSACTION
SET XACT_ABORT OFF
GO
前臺搭建好表單,后臺主要是一個函數(shù):
復(fù)制代碼 代碼如下:www.hl5o.cn
public void fnInsertSingleUser(DataTable v_dt)
{
try
{
SqlConnection cn = new SqlConnection(CONN);
SqlCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = @"sp_InsertSingleUser";
SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);
10
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
catch (Exception ex)
{
throw ex;
}
}
點擊【添加】按鈕時調(diào)用存儲過程。測試是完成了
分享:在sqlserver2005中安裝sql server 2000的示例數(shù)據(jù)庫northwind的方法裝完sql server 2005后卻沒有找到ms的示例數(shù)據(jù)庫northwind 后來查看安裝光盤發(fā)現(xiàn)sql server 2005種只有adventurework與adventureworkDW這兩個sample database 到ms官方站找了好久 才找到sql server 2000的sample database
相關(guān)Mssql數(shù)據(jù)庫教程:
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 獲取SQL Server表字段的各種屬性實例代碼
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 觸發(fā)器學(xué)習(xí)
- 解讀SQL Server的BUILTIN\Administrators用戶
- 解讀sql server注冊表操作相關(guān)的幾個未公開過程
- 解決Sql Server警報的疑難問題
- 如何在SQL 2005中實現(xiàn)循環(huán)每一行做一定的操作
- 總結(jié)經(jīng)典常用的SQL語句(2)
- sql2008評估期已過的解決辦法及序列號
- 怎樣合理設(shè)置內(nèi)存讓數(shù)據(jù)庫與其他程序共存
- Sql學(xué)習(xí)第四天——SQL 關(guān)于with cube,with rollup和grouping解釋及演示
- sql2008 還原數(shù)據(jù)庫解決方案
猜你也喜歡看這些
- 如何用命令行進入mysql具體操作步驟
- MySQL數(shù)據(jù)庫INSERT、UPDATE、DELETE以及REPLACE語句的用法詳解
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- 設(shè)置mysql的sql_mode
- MySQL無法啟動1067錯誤的解決方法
- 通過mysqladmin遠(yuǎn)程管理mysql的方法
- java連接mysql數(shù)據(jù)庫亂碼怎么辦
- 解析MySQL中INSERT INTO SELECT的使用
- 解決bash: mysql: command not found 的方法
- MySQL數(shù)據(jù)庫InnoDB數(shù)據(jù)恢復(fù)工具的使用小結(jié)詳解
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-將DataTable作為存儲過程參數(shù)的用法實例詳解
。