日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

SQL Server存储过程输入参数使用表值

發(fā)布時(shí)間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Server存储过程输入参数使用表值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2008之前如果我們想要將表作為輸入?yún)?shù)傳遞給SQL Server存儲(chǔ)過程使比較困難的,可能需要很多的邏輯處理將這些表數(shù)據(jù)作為字符串或者XML傳入。

?

在2008中提供了表值參數(shù)。使用表值參數(shù),可以不必創(chuàng)建臨時(shí)表或許多參數(shù),即可向 Transact-SQL 語句或例程(如存儲(chǔ)過程或函數(shù))發(fā)送多行數(shù)據(jù),這樣可以省去很多自定義的代碼。這樣的操作對(duì)于存儲(chǔ)過程內(nèi)基于表函數(shù)的操作變得非常容易操作。

表值參數(shù)是使用用戶定義的表類型來聲明的。所以使用之前要先定義表類型。

/* 創(chuàng)建表類型.*/

CREATE TYPE LocationTableType AS TABLE

( LocationName VARCHAR(50)

, CostRate INT );

GO

?

/* 創(chuàng)建一個(gè)存儲(chǔ)過程以表值參數(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ǔ)過程*/

EXEC usp_InsertProductionLocation@LocationTVP;

GO

?

查詢表Production.Location可以看到數(shù)據(jù)已經(jīng)插入了。

關(guān)于優(yōu)缺點(diǎn)參考:使用表值參數(shù)(數(shù)據(jù)庫引擎)

?

轉(zhuǎn)載于:https://www.cnblogs.com/bbsno1/p/3262778.html

總結(jié)

以上是生活随笔為你收集整理的SQL Server存储过程输入参数使用表值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。