SQL Server存儲(chǔ)過(guò)程中使用表值作為輸入?yún)?shù)示例
在2008之前如果我們想要將表作為輸入?yún)?shù)傳遞給SQL Server存儲(chǔ)過(guò)程使比較困難的,可能需要很多的邏輯處理將這些表數(shù)據(jù)作為字符串或者XML傳入。
在2008中提供了表值參數(shù)。使用表值參數(shù),可以不必創(chuàng)建臨時(shí)表或許多參數(shù),即可向 Transact-SQL 語(yǔ)句或例程(如存儲(chǔ)過(guò)程或函數(shù))發(fā)送多行數(shù)據(jù),這樣可以省去很多自定義的代碼。這樣的操作對(duì)于存儲(chǔ)過(guò)程內(nèi)基于表函數(shù)的操作變得非常容易操作。
表值參數(shù)是使用用戶定義的表類(lèi)型來(lái)聲明的。所以使用之前要先定義表類(lèi)型。
/* 創(chuàng)建表類(lèi)型.*/ CREATE TYPE LocationTableType AS TABLE ( LocationName VARCHAR(50) , CostRate INT ); GO /* 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程以表值參數(shù)作為輸入. */ CREATE PROCEDURE dbo. usp_InsertProductionLocation @TVP LocationTableType READONLY AS SET NOCOUNT ON INSERT INTO Production.Location (Name ,CostRate ,Availability ,ModifiedDate) SELECT *, 0, GETDATE() FROM @TVP; GO /* 聲明表值參數(shù)變量.*/ DECLARE @LocationTVP ASLocationTableType; /* 將數(shù)據(jù)插入表值變量*/ INSERT INTO @LocationTVP(LocationName, CostRate) SELECT Name, 0.00 FROM Person.StateProvince; /* 將變量傳遞給存儲(chǔ)過(guò)程*/ EXEC usp_InsertProductionLocation@LocationTVP; GO
查詢表Production.Location可以看到數(shù)據(jù)已經(jīng)插入了。
相關(guān)文章
如何在navicat中利用sql語(yǔ)句建表+添加數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于如何在navicat中利用sql語(yǔ)句建表+添加數(shù)據(jù)的相關(guān)資料,Navicat是一套快速,專(zhuān)為簡(jiǎn)化數(shù)據(jù)庫(kù)的管理及降低系統(tǒng)管理成本而設(shè),它的設(shè)計(jì)符合數(shù)據(jù)庫(kù)管理員、開(kāi)發(fā)人員及中小企業(yè)的需要,需要的朋友可以參考下2023-10-10SQL Server誤區(qū)30日談 第17天 有關(guān)頁(yè)校驗(yàn)和的誤區(qū)
從舊的實(shí)例升級(jí)上來(lái)的數(shù)據(jù)庫(kù)不會(huì)自動(dòng)開(kāi)啟頁(yè)校驗(yàn)和,除非你顯式使用ALTER DATABASE databasename SET PAGE_VERIFY CHECKSUM進(jìn)行開(kāi)啟。而在SQL Server 2005或2008新建的數(shù)據(jù)庫(kù)頁(yè)校驗(yàn)和是默認(rèn)開(kāi)啟的2013-01-01sql server2008調(diào)試存儲(chǔ)過(guò)程的完整步驟
這篇文章主要給大家分享介紹了關(guān)于sql server2008調(diào)試存儲(chǔ)過(guò)程的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11SQL Server數(shù)據(jù)復(fù)制到的Access兩步走
以下的文章主要描述的是把SQL Server數(shù)據(jù)復(fù)制到的Access數(shù)據(jù)庫(kù)中的實(shí)際操作步驟,以及對(duì)其在實(shí)際操作中要用到的代碼描述。2015-09-09詳解安裝sql2012出現(xiàn)錯(cuò)誤could not open key...解決辦法
這篇文章主要介紹了詳解安裝sql2012出現(xiàn)錯(cuò)誤could not open key...解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11SQLServer用存儲(chǔ)過(guò)程實(shí)現(xiàn)插入更新數(shù)據(jù)示例
這篇文章主要介紹了SQLServer如何用存儲(chǔ)過(guò)程實(shí)現(xiàn)插入更新數(shù)據(jù),需要的朋友可以參考下2014-08-08SQLSERVER 本地查詢更新操作遠(yuǎn)程數(shù)據(jù)庫(kù)的代碼
SQLSERVER 本地查詢更新操作遠(yuǎn)程數(shù)據(jù)庫(kù)的代碼,需要的朋友可以參考下2012-11-11使用SSIS創(chuàng)建同步數(shù)據(jù)庫(kù)數(shù)據(jù)任務(wù)的方法
SSIS(SQL Server Integration Services)是用于生成企業(yè)級(jí)數(shù)據(jù)集成和數(shù)據(jù)轉(zhuǎn)換解決方案的平臺(tái)。使用 Integration Services 可解決復(fù)雜的業(yè)務(wù)問(wèn)題,具體表現(xiàn)為:復(fù)制或下載文件,發(fā)送電子郵件以響應(yīng)事件,更新數(shù)據(jù)倉(cāng)庫(kù),清除和挖掘數(shù)據(jù)以及管理 SQL Server 對(duì)象和數(shù)據(jù)2012-09-09