VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
魔兽世界wow > 數據庫 > T-SQL >
  • sql語句大全之MSSQL 存儲過程中 表值參數用法

  • 2019-05-03 22:38 來源:未知

魔兽世界wow www.geyjm.icu 一、SQL自定義表類型簡介


1.1SQL自定義表類型簡介

在SQL-server中,用戶將一個表結構定義為一個新的用戶類型,
并且可以將這個用戶自定義類型作為 存儲過程 函數 SQL語句中的參數類型


創建一個 自定義 “表類型”

CREATE TYPE [dbo].[tableTest] AS TABLE(
	[a] [varchar](30) NULL,
	[b] [varchar](100) NULL
)

注意事項:
1 表類型不能做為列定義的列類型
2 創建表類型后,不可以執行 Alter Type ,只可以進行 Create type drop type
3 創建表類型時,計算列不 可以調用用戶自定義函數
4 創建表類型 不能為表類型指定默認值
5 創建表類型 禁止使用非聚集索引



1.2 SQL自定義表類型應用場景

大數據庫插入
存儲過程中 將常用的臨時表定義為一個表類型 簡化代碼,使代碼整齊


二、SQL自定義表類型—舉例應用


2.1 存儲過程調用自定義表類型

 定義存儲過程
 

CREATE proc [dbo].[pr_testTableType] @keyId varchar(36), @tableInfo tableTest readOnly --- 自定義表類型必須使用readonLy as begin create table #t (keyId int identity,a varchar(200),b varchar(200)) insert into #t (a,b) select a,b from @tableInfo t select * from #t truncate table #t drop table #t end
 c# 代碼調用存儲過程 (采用參數化的方式發送此參數)

              DataTable tb = new DataTable();
            DataColumn a = new DataColumn("a");
            DataColumn b = new DataColumn("b");
            tb.Columns.Add(a);tb.Columns.Add(b);

            DataRow r1 =tb.NewRow();
            r1["a"] ="測試1----";
            r1["b"] ="測試2";
            
            tb.Rows.Add(r1);


            SqlParameter[] p = new SqlParameter[]{
                new SqlParameter("@keyId",System.Guid.NewGuid().ToString()),
                new SqlParameter("@tableInfo",tb)
            };
            

	 // 方法二:
         //   SqlParameter tmp =   new SqlParameter("@tableInfo",SqlDbType.Structured);
         //  tmp.SqlValue = tb;

         //  SqlParameter[] p = new SqlParameter[]{
         //       new SqlParameter("@keyId",System.Guid.NewGuid().ToString()),                
         //      tmp
         //  };


            db.ExecProcParameterReDataSet("pr_testTableType",p); 
相關教程