在SQL Server 2008中運(yùn)用表值參數(shù)(TVP)(2)_Mssql數(shù)據(jù)庫(kù)教程
推薦:SQL Server數(shù)據(jù)庫(kù)增強(qiáng)版?zhèn)浞蒹w驗(yàn)老鳥說事:Microsoft SQL Server數(shù)據(jù)庫(kù)增強(qiáng)版?zhèn)浞蒹w驗(yàn) 在歐洲,有一首流傳很廣的民諺: 因?yàn)閬G失一根鐵釘,我們失去了一塊馬蹄鐵; 因?yàn)槭ヒ粔K馬蹄鐵,我們失去了一匹駿馬; 因?yàn)槭?/p>
除了簡(jiǎn)單的查找源系統(tǒng)鍵的代理鍵之外,還有一種情況可利用表值參數(shù),即事實(shí)表含有一個(gè)不存在于維度表的源系統(tǒng)鍵。在這種情況下,我們則想要在維度里創(chuàng)建一個(gè)推斷成員(Inferred member),也就是說,創(chuàng)建一個(gè)新的代理鍵并把它添加到維度里,在我們從源系統(tǒng)里獲得真正的維度行之后再把它替換更新掉。
下面的演示編碼只在SQL Server 2008的二月份社區(qū)測(cè)試試用版中進(jìn)行過測(cè)試。
新建一個(gè)表類型
為了把表作為一個(gè)參數(shù)傳遞到存儲(chǔ)過程或函數(shù)中,你首先要?jiǎng)?chuàng)建一個(gè)TABLE TYPE,如下所示:
以下為引用的內(nèi)容:
CREATETYPESourceKeyListASTABLE(
SourceKeyNVARCHAR(50)
)
GO
T-SQL編碼跟新建一個(gè)普通的表的編碼非常相似。你可以查詢當(dāng)前數(shù)據(jù)庫(kù)的sys.types來確定已創(chuàng)建的任何表類型:
以下為引用的內(nèi)容:
SELECTname,system_type_id,user_type_id
FROMsys.types
WHEREis_table_type=1
新建一個(gè)帶有表值參數(shù)的存儲(chǔ)過程
我們要?jiǎng)?chuàng)建一個(gè)存儲(chǔ)過程,該存儲(chǔ)過程執(zhí)行代理鍵查找命令,如果源鍵不存在則添加一個(gè)推理成員。首先我們需要新建一個(gè)維度表樣例:
以下為引用的內(nèi)容:
CREATETABLEdbo.dim_Customer(
sk_CustomerINTIDENTITYNOTNULL,
CustomerSourceKeyNVARCHAR(50)NOTNULL,
CustomerNameNVARCHAR(50)NOTNULL,
InferredMemberBITNOTNULL
)
代理鍵是整數(shù)類型,我們使用IDENTITY屬性來自動(dòng)分配插入行的序列號(hào)。當(dāng)我們插入一行源鍵不存在的行時(shí),InferredMember列設(shè)置為1。當(dāng)我們?cè)诰S度處理過程中從源系統(tǒng)中獲得該行后,它將替換掉推理成員行,而InferredMember列的值會(huì)變成0。
分享:如何有效防止Java程序源碼被人偷窺?Java程序的源代碼很容易被別人偷看,只要有一個(gè)反編譯器,任何人都可以分析別人的代碼。本文討論如何在不修改原有程序的情況下,通過加密技術(shù)保護(hù)源代碼。 一、為什么要加密? 對(duì)于傳統(tǒng)的C或
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫(kù),提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 怎樣處理SQL Server日志文件總結(jié)及日志滿的問題
- 查詢表里有N組相同記錄的SQL語句
- SQL Server 2005中更改sa的用戶名的方法
- SQL Server查詢語句的使用
- sql server 還原數(shù)據(jù)庫(kù)時(shí)提示數(shù)據(jù)庫(kù)正在使用,無法進(jìn)行操作的解決方法
- 解決Mysql服務(wù)無法啟動(dòng)的1067錯(cuò)誤
- SQL SQL Server 2008中的新日期數(shù)據(jù)類型
- SQL Server不能啟動(dòng)的常見故障[1][1]
- 如何將SQL 2000日志遷移到SQL Server 2008
- sql2005 日志清理 SQL2005壓縮清除日志的方法
猜你也喜歡看這些
- 更新text字段時(shí)出現(xiàn)Row size too large報(bào)錯(cuò)應(yīng)付措施
- 網(wǎng)站模板MySQL timestamp自動(dòng)更新時(shí)間
- MySQL筆記之連接查詢?cè)斀?/a>
- mysql導(dǎo)出數(shù)據(jù)庫(kù)幾種方法
- 在SQL Server的try...catch語句中獲取錯(cuò)誤消息代碼的的語句
- linux Xtrabackup安裝及使用方法
- MySQL自增列插入0值的解決方案
- MySQL:數(shù)據(jù)庫(kù)知識(shí)點(diǎn)
- SQLServer導(dǎo)出數(shù)據(jù)到MySQL實(shí)例介紹
- 網(wǎng)站模板:以數(shù)據(jù)庫(kù)字段分組顯示數(shù)據(jù)的sql語句
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫(kù)教程-在SQL Server 2008中運(yùn)用表值參數(shù)(TVP)(2)
。