將DataTable作為存儲過程參數的用法實例詳解_Mssql數據庫教程

      編輯Tag賺U幣

      推薦:獲取SQL Server表字段的各種屬性實例代碼
      下面的語句將實現獲取SQL Server表字段的各種屬性,感興趣的朋友可以參考下哈,希望對你有所幫助

      最近工作中寫了幾個存儲過程,需要向存儲過程中傳遞字符串,因為SQL Server 2000中沒有內置類似于 split 的函數,只好自己處理,將前臺數據集中的一列用逗號拆分存到一個List<string>中,再轉化為字符串傳給存儲過程,很是麻煩。今天看了下SQL Server 2008的新特性,發現有表變量的使用,及其將DataTable作為參數的用法,就嘗試了一下,簡單談談心得。


      一、測試環境
      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。
      二、測試概述
      測試項目很簡單,就是添加新用戶

      三、準備數據
      1、建立數據庫、表、類型、存儲過程
      復制代碼 代碼如下:www.wf0088.com

      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

      復制代碼 代碼如下:www.wf0088.com

      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

      前臺搭建好表單,后臺主要是一個函數:
      復制代碼 代碼如下:www.wf0088.com

      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;
      }
      }

      點擊【添加】按鈕時調用存儲過程。測試是完成了

      分享:在sqlserver2005中安裝sql server 2000的示例數據庫northwind的方法
      裝完sql server 2005后卻沒有找到ms的示例數據庫northwind 后來查看安裝光盤發現sql server 2005種只有adventurework與adventureworkDW這兩個sample database 到ms官方站找了好久 才找到sql server 2000的sample database

      來源:模板無憂//所屬分類:Mssql數據庫教程/更新時間:2013-05-24
      相關Mssql數據庫教程