自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server 2008中使用DataTable作為存儲過程的參數(shù)

數(shù)據(jù)庫 SQL Server
本文我們主要介紹了SQL Server 2008中使用DataTable作為存儲過程的參數(shù)的相關(guān)知識,并通過一個一個實際的例子進(jìn)行測試,希望能夠?qū)δ兴鶐椭?/div>

SQL Server 2008中使用DataTable作為存儲過程的參數(shù)的相關(guān)知識是本文我們主要要介紹的內(nèi)容,筆者在最近工作中寫了幾個存儲過程,需要向存儲過程中傳遞字符串,因為SQL Server 2000中沒有內(nèi)置類似于split 的函數(shù),只好自己處理,將前臺數(shù)據(jù)集中的一列用逗號拆分存到一個List中,再轉(zhuǎn)化為字符串傳給存儲過程,很是麻煩。今天看了下SQL Server 2008的新特性,發(fā)現(xiàn)有表變量的使用,及其將DataTable作為參數(shù)的用法,就嘗試了一下,簡單談?wù)勑牡谩?/p>

一、測試環(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。

二、測試概述

測試項目很簡單,就是添加新用戶

SQL Server 2008中使用DataTable作為存儲過程的參數(shù)

三、準(zhǔn)備數(shù)據(jù)

建立數(shù)據(jù)庫、表、類型、存儲過程

代碼:

  1. IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Users]') AND type in (N'U'))  
  2. DROP TABLE [dbo].[Users]  
  3. CREATE TABLE [dbo].[Users](  
  4.  [UserID] [int] IDENTITY(-1,-1) NOT NULL,  
  5.  [UserName] [varchar](20) NOT NULL,  
  6.  [UserPass] [varchar](20) NOT NULL,  
  7.  [Sex] [bit] NULL,  
  8.  [Age] [smallint] NULL,  
  9.  CONSTRAINT [PK_Users_UserID] PRIMARY KEY CLUSTERED   
  10. (  
  11. [UserID] ASC  
  12. )WITH (PAD_INDEX  = OFFSTATISTICS_NORECOMPUTE  = OFFIGNORE_DUP_KEY = OFFALLOW_ROW_LOCKS  = ONALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]  
  13. ) ON [PRIMARY]  
  14.  
  15. IF  EXISTS (SELECT * FROM sys.types st JOIN sys.schemas ss ON st.schema_id = ss.schema_id WHERE st.name = N'UserTable' AND ss.name = N'dbo')  
  16. DROP TYPE [dbo].[UserTable]  
  17. CREATE TYPE [dbo].[UserTable] AS TABLE(  
  18.  [UserName] [varchar](20) NOT NULL,  
  19.  [UserPass] [varchar](20) NOT NULL,  
  20.  [Sex] [bit] NULL,  
  21.  [Age] [smallint] NULL  
  22. )  
  23.  
  24. IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_InsertSingleUser]') AND type in (N'P', N'PC'))  
  25. DROP PROCEDURE [dbo].[sp_InsertSingleUser]  
  26. GO  
  27. CREATE PROCEDURE [dbo].[sp_InsertSingleUser]   
  28. (   
  29. @User UserTable READONLY   
  30. )   
  31. AS   
  32. SET XACT_ABORT ON   
  33. BEGIN TRANSACTION   
  34. INSERT INTO dbo.Users(UserName, UserPass, Sex, Age)   
  35. SELECT UserName, UserPass, Sex, Age FROM @User   
  36. COMMIT TRANSACTION   
  37. 前臺搭建好表單,后臺主要是一個函數(shù):  
  38.  
  39. 代碼  
  40.  
  41. public void fnInsertSingleUser(DataTable v_dt)   
  42. {   
  43. try   
  44. {   
  45. SqlConnection cn = new SqlConnection(CONN);   
  46. SqlCommand cmd = cn.CreateCommand();   
  47. cmd.CommandType = CommandType.StoredProcedure;   
  48. cmd.CommandText = @"sp_InsertSingleUser";   
  49. SqlParameter p = cmd.Parameters.AddWithValue("@User", v_dt);   
  50.  
  51. DataSet ds = new DataSet();   
  52. SqlDataAdapter da = new SqlDataAdapter(cmd);   
  53. da.Fill(ds);   
  54. }   
  55. catch (Exception ex)   
  56. {   
  57. throw ex;   
  58. }   

點擊【添加】按鈕時調(diào)用存儲過程。測試是完成了,也很簡單,傳遞一個DataTable做參數(shù)確實很方便吧,能夠輕松完成原先需要很多編碼的工 作。關(guān)于表變量還是有些道道的,如創(chuàng)建時判斷其是否存在的語句,刪除表變量前需要先刪除引用表變量的存儲過程等。

一般開發(fā)我大多會選擇用臨時表,處理起來 比較方便,表變量可以作為存儲過程參數(shù)確實是一個獨特的優(yōu)勢,希望在SQL Server的未來版本中能夠繼續(xù)增強(qiáng)對表變量和臨時表的支持,尤其是早日支持臨時表調(diào)試。

關(guān)于SQL Server 2008數(shù)據(jù)庫中使用DataTable作為存儲過程的參數(shù)的相關(guān)知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. SQL Server 2005導(dǎo)入Oracle 10g的C#源碼
  2. SQL Server 2008快速清理日志文件的代碼
  3. SQL Server 2008數(shù)據(jù)庫中CDC的功能使用及說明
  4. SQL Server 2008阻止保存要求重新創(chuàng)建表的更改的問題
  5. SQL Server數(shù)據(jù)庫row_number() over() 來自動產(chǎn)生行號
責(zé)任編輯:趙鵬 來源: 百度空間
相關(guān)推薦

2010-11-12 09:18:13

SQL Server存

2011-09-01 15:24:22

SQL Server 存儲過程調(diào)試

2009-08-04 10:29:06

在C#中使用存儲過程

2010-09-14 10:16:57

sql server

2011-09-01 17:25:03

SQL Server 查看死鎖存儲過程

2011-08-29 18:02:29

SQL Server FileStream

2010-07-13 10:35:20

SQL Server2

2010-07-15 12:38:14

SQL Server存

2011-09-01 14:00:11

SQL Server 存儲過程顯示表結(jié)構(gòu)

2011-03-24 13:38:47

SQL Server 存儲分頁

2011-08-11 09:49:33

SQL Server 存儲過程插入更新數(shù)據(jù)

2021-02-08 11:04:21

嵌套SQL Server語言

2010-10-20 16:17:17

SQL Server角

2010-09-06 11:05:05

SQL SERVER語句

2011-08-24 16:56:54

OracleArray類型存儲過程

2009-08-06 16:44:06

2010-09-27 16:10:42

SQL Server游

2010-11-10 13:03:15

SQL Server存

2009-04-16 17:38:24

SQL Server 空間數(shù)據(jù)智能

2009-04-16 17:44:31

點贊
收藏

51CTO技術(shù)棧公眾號