日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]SQL Server 2008中SQL應(yīng)用系列--目錄索引經(jīng)常我們會(huì)遇到需要一次往數(shù)據(jù)表中插入多行數(shù)據(jù)。此時(shí),最簡(jiǎn)單的莫過(guò)于調(diào)用存儲(chǔ)過(guò)程。比如目標(biāo)表如下:USE?testDb2 GO IF?NOT

SQL Server 2008中SQL應(yīng)用系列--目錄索引

經(jīng)常我們會(huì)遇到需要一次往數(shù)據(jù)表中插入多行數(shù)據(jù)。此時(shí),最簡(jiǎn)單的莫過(guò)于調(diào)用存儲(chǔ)過(guò)程。

比如目標(biāo)表如下:

USE?testDb2
GO

IF?NOT?OBJECT_ID('tb_Demo_MultiRowsInsert')?IS?NULL
DROP?TABLE?[tb_Demo_MultiRowsInsert]

/******?Object:?Table?[dbo].[tb_Demo_MultiRowsInsert]?Script?Date:?2012/4/6?12:19:21?******/

CREATE?TABLE?[dbo].[tb_Demo_MultiRowsInsert](
[TeamID]?int?not?null?primary?key?identity(101,1),
[PName]?[Nvarchar](20)?NOT?NULL,
[GName]?[Nvarchar](20)?NOT?NULL
)

GO

調(diào)用存儲(chǔ)過(guò)程插入一個(gè)行集

/*************一次插入一個(gè)行集******************/
/*********?3w@live.cn?邀月***************/
Create?Procedure?CPP_InsertOneRows
(@PName?Nvarchar(20)='',
@GName?Nvarchar(20)=''
)
as
INSERT?[dbo].[tb_Demo_MultiRowsInsert]?(PName,GName)
VALUES(@PName,@GName)
GO

如果需要多行,則循環(huán)調(diào)用存儲(chǔ)過(guò)程即可。這樣做的壞處是顯而易見(jiàn)的。于是有了改進(jìn)方案:

/*************一次插入五個(gè)行集******************/
/*********?3w@live.cn?邀月***************/
Create?Procedure?CPP_InsertFiveRows
(
@PName1?Nvarchar(20)='',
@GName1?Nvarchar(20)='',
@PName2?Nvarchar(20)='',
@GName2?Nvarchar(20)='',
@PName3?Nvarchar(20)='',
@GName3?Nvarchar(20)='',
@PName4?Nvarchar(20)='',
@GName4?Nvarchar(20)='',
@PName5?Nvarchar(20)='',
@GName5?Nvarchar(20)=''
)
as

INSERT?[dbo].[tb_Demo_MultiRowsInsert]?(PName,GName)
VALUES(@PName1,@GName1)

INSERT?[dbo].[tb_Demo_MultiRowsInsert]?(PName,GName)
VALUES(@PName2,@GName2)

INSERT?[dbo].[tb_Demo_MultiRowsInsert]?(PName,GName)
VALUES(@PName3,@GName3)

INSERT?[dbo].[tb_Demo_MultiRowsInsert]?(PName,GName)
VALUES(@PName4,@GName4)

INSERT?[dbo].[tb_Demo_MultiRowsInsert]?(PName,GName)
VALUES(@PName5,@GName5)
GO

這樣,一次可以插入五條數(shù)據(jù),當(dāng)然十條也可以。但明顯也有不足,首先,如果剛好要插入3條數(shù)據(jù),那么應(yīng)該避免null值和允許插入等異常。

幸運(yùn)的是,SQL Server 2008提供了新的表值參數(shù),可以一次性傳入并處理多個(gè)行集。

示例如下:

/*************一次插入N個(gè)行集******************/
/*********?3w@live.cn?邀月***************/

----首先,我們定義一個(gè)表值參數(shù)類型,其實(shí)就是一個(gè)表變量
Create?type?dbo.tp_Demo_MultiRowsInsert?as?Table
(
[PName]?[Nvarchar](20)?NOT?NULL,
[GName]?[Nvarchar](20)?NOT?NULL
)
GO

----下面我們用這個(gè)表變量做參數(shù),通過(guò)存儲(chǔ)過(guò)程調(diào)用它
CREATE?Procedure?dbo.CPP_InsertMultiRows
(@ManyRows?as?tp_Demo_MultiRowsInsert?readonly
)
as
INSERT?[dbo].[tb_Demo_MultiRowsInsert]
SELECT?PName,GName?from?@ManyRows

GO

----程序中構(gòu)造多個(gè)行集
DECLARE?@tmpRows?as?tp_Demo_MultiRowsInsert

----插入多個(gè)數(shù)據(jù)到參數(shù)表中
INSERT?@tmpRows(PName,GName)?values('胡一刀','國(guó)土資源部')
INSERT?@tmpRows(PName,GName)?values('胡青牛','醫(yī)藥局')
INSERT?@tmpRows(PName,GName)?values('令狐沖','文廣中心')

----傳遞參數(shù)到存儲(chǔ)過(guò)程,完成一次多行集插入
EXEC?dbo.CPP_InsertMultiRows?@tmpRows

?注意:這種一次轉(zhuǎn)入多個(gè)參數(shù)的模式與SQL Servrer 2008新增的Values((group1),(group2),...,(groupn))的方式很類似,后者的應(yīng)用可以看這里:

http://www.cnblogs.com/downmoon/archive/2010/10/12/1849176.html

小結(jié):SQL Server 2008 新增參數(shù)類型-表值參數(shù)。使用用戶定義的表類型來(lái)聲明,借助它,可以不必創(chuàng)建臨時(shí)表或許多參數(shù),即可向存儲(chǔ)過(guò)程發(fā)送多行數(shù)據(jù)。對(duì)于某些繁忙的系統(tǒng),這減少了應(yīng)用程序和數(shù)據(jù)庫(kù)服務(wù)器之間的交互,從而減少了占用的帶寬,數(shù)據(jù)庫(kù)端的事務(wù)處理更高效。



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

其實(shí)從應(yīng)用層面上,Win2000的Telnet服務(wù)并沒(méi)有什么可說(shuō)的,絕大部分內(nèi)容你都可以從HELP文件中得到,我在此只是把它稍微整理一下而已?!in2000為我們提供了Telnet客戶機(jī)和服務(wù)器程序:Telnet.ex...

關(guān)鍵字: Telnet Client server

前言sql優(yōu)化是一個(gè)大家都比較關(guān)注的熱門話題,無(wú)論你在面試,還是工作中,都很有可能會(huì)遇到。如果某天你負(fù)責(zé)的某個(gè)線上接口,出現(xiàn)了性能問(wèn)題,需要做優(yōu)化。那么你首先想到的很有可能是優(yōu)化sql語(yǔ)句,因?yàn)樗母脑斐杀鞠鄬?duì)于代碼來(lái)說(shuō)...

關(guān)鍵字: sql

無(wú)論是開(kāi)發(fā)、測(cè)試,還是DBA,都難免會(huì)涉及到數(shù)據(jù)庫(kù)的操作,比如:創(chuàng)建某張表,添加某個(gè)字段、添加數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)、查詢數(shù)據(jù)等等。

關(guān)鍵字: 數(shù)據(jù)庫(kù) sql

作者一直認(rèn)為,從應(yīng)用程序到框架再到系統(tǒng),使用每一個(gè)代碼是一回事理解。使用“今天,作者將研究服務(wù)器端套接字的功能。準(zhǔn)確地說(shuō),它是bind(基于linux3.10)。

關(guān)鍵字: Linux bind server

  案例場(chǎng)景   某排水集團(tuán)在線業(yè)務(wù)區(qū)的SCADA系統(tǒng)需要從DMZ區(qū)的I/O Server上采集數(shù)據(jù),SCADA系統(tǒng)使用某些IP能夠正常從I/O Server采集數(shù)據(jù),但是另一部分IP則

關(guān)鍵字: scada server 數(shù)據(jù)包

如何選擇騰訊云服務(wù)器操作系統(tǒng)? 騰訊云服務(wù)器操作系統(tǒng)通過(guò)鏡像安裝。 哪個(gè)最適合騰訊云鏡像? 服務(wù)器選擇鏡像Linux系統(tǒng)還是Windows服務(wù)器? 云服務(wù)器欄(yunfuwuqiba.com)說(shuō)明了騰訊云服務(wù)器的鏡像列表...

關(guān)鍵字: Linux server Windows 騰訊云

前言 上一篇總結(jié)了Mysql的鎖機(jī)制,通過(guò)讀者的反映和閱讀量顯示,總體還是不錯(cuò)的,感興趣的可以閱讀一下[大廠面試官必問(wèn)的Mysql鎖機(jī)制]。 寫了那么多的Mysql文章,有讀者問(wèn)我是不是dba,工作真的需要掌握那么深嗎。...

關(guān)鍵字: sql

前言 前幾天有粉絲和我聊到他找工作面試大廠時(shí)被問(wèn)的問(wèn)題,因?yàn)楝F(xiàn)在疫情期間,找工作也特別難找。他說(shuō)面試的題目也比較難,都偏向于一兩年的工作經(jīng)驗(yàn)的面試題。 他說(shuō)在一面的時(shí)候被問(wèn)到Mysql的面試題,索引那塊自己都回答比較滿意...

關(guān)鍵字: sql

? ? ? ? ? ? ? ? ? ? ? ? 我所寫的項(xiàng)目是使用Maven開(kāi)發(fā),在pom.xml中添加如下必要依賴: ? ? ? ? 添加com.microsoft.sqlserver的mssql-

關(guān)鍵字: server sql 存儲(chǔ)過(guò)程

Linux 進(jìn)程間通信的幾種主要手段。其中管道和有名管道是最早的進(jìn)程間通信機(jī)制之一,管道可用于具有親緣關(guān)系進(jìn)程間的通信,有名管道克服了管道沒(méi)有名字的限制,因此,除具有管道所具有的功能外,它還允許無(wú)親緣

關(guān)鍵字: Linux server
關(guān)閉