在SQL Server 2008中運用表值參數(TVP)(2)_Mssql數據庫教程
推薦:SQL Server數據庫增強版備份體驗老鳥說事:Microsoft SQL Server數據庫增強版備份體驗 在歐洲,有一首流傳很廣的民諺: 因為丟失一根鐵釘,我們失去了一塊馬蹄鐵; 因為失去一塊馬蹄鐵,我們失去了一匹駿馬; 因為失去
除了簡單的查找源系統鍵的代理鍵之外,還有一種情況可利用表值參數,即事實表含有一個不存在于維度表的源系統鍵。在這種情況下,我們則想要在維度里創建一個推斷成員(Inferred member),也就是說,創建一個新的代理鍵并把它添加到維度里,在我們從源系統里獲得真正的維度行之后再把它替換更新掉。
下面的演示編碼只在SQL Server 2008的二月份社區測試試用版中進行過測試。
新建一個表類型
為了把表作為一個參數傳遞到存儲過程或函數中,你首先要創建一個TABLE TYPE,如下所示:
以下為引用的內容:
CREATETYPESourceKeyListASTABLE(
SourceKeyNVARCHAR(50)
)
GO
T-SQL編碼跟新建一個普通的表的編碼非常相似。你可以查詢當前數據庫的sys.types來確定已創建的任何表類型:
以下為引用的內容:
SELECTname,system_type_id,user_type_id
FROMsys.types
WHEREis_table_type=1
新建一個帶有表值參數的存儲過程
我們要創建一個存儲過程,該存儲過程執行代理鍵查找命令,如果源鍵不存在則添加一個推理成員。首先我們需要新建一個維度表樣例:
以下為引用的內容:
CREATETABLEdbo.dim_Customer(
sk_CustomerINTIDENTITYNOTNULL,
CustomerSourceKeyNVARCHAR(50)NOTNULL,
CustomerNameNVARCHAR(50)NOTNULL,
InferredMemberBITNOTNULL
)
代理鍵是整數類型,我們使用IDENTITY屬性來自動分配插入行的序列號。當我們插入一行源鍵不存在的行時,InferredMember列設置為1。當我們在維度處理過程中從源系統中獲得該行后,它將替換掉推理成員行,而InferredMember列的值會變成0。
分享:如何有效防止Java程序源碼被人偷窺?Java程序的源代碼很容易被別人偷看,只要有一個反編譯器,任何人都可以分析別人的代碼。本文討論如何在不修改原有程序的情況下,通過加密技術保護源代碼。 一、為什么要加密? 對于傳統的C或
- sql 語句練習與答案
- 深入C++ string.find()函數的用法總結
- SQL Server中刪除重復數據的幾個方法
- sql刪除重復數據的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數據庫,提示 無法為該請求檢索數據 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數的用法實例詳解
- 相關鏈接:
- 教程說明:
Mssql數據庫教程-在SQL Server 2008中運用表值參數(TVP)(2)。