中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

SQL Server存儲(chǔ)過(guò)程及一些基本用法
來(lái)源:易賢網(wǎng) 閱讀:950 次 日期:2014-12-04 15:05:07
溫馨提示:易賢網(wǎng)小編為您整理了“SQL Server存儲(chǔ)過(guò)程及一些基本用法”,方便廣大網(wǎng)友查閱!

Transact-SQL中的存儲(chǔ)過(guò)程,非常類(lèi)似于Java語(yǔ)言中的方法,它可以重復(fù)調(diào)用。當(dāng)存儲(chǔ)過(guò)程執(zhí)行一次后,可以將語(yǔ)句緩存中,這樣下次執(zhí)行的時(shí)候直接使用緩存中的語(yǔ)句。這樣就可以提高存儲(chǔ)過(guò)程的性能。

Ø 存儲(chǔ)過(guò)程的概念

存儲(chǔ)過(guò)程Procedure是一組為了完成特定功能的SQL語(yǔ)句集合,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名稱(chēng)并給出參數(shù)來(lái)執(zhí)行。

存儲(chǔ)過(guò)程中可以包含邏輯控制語(yǔ)句和數(shù)據(jù)操縱語(yǔ)句,它可以接受參數(shù)、輸出參數(shù)、返回單個(gè)或多個(gè)結(jié)果集以及返回值。

由于存儲(chǔ)過(guò)程在創(chuàng)建時(shí)即在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行了編譯并存儲(chǔ)在數(shù)據(jù)庫(kù)中,所以存儲(chǔ)過(guò)程運(yùn)行要比單個(gè)的SQL語(yǔ)句塊要快。同時(shí)由于在調(diào)用時(shí)只需用提供存儲(chǔ)過(guò)程名和必要的參數(shù)信息,所以在一定程度上也可以減少網(wǎng)絡(luò)流量、簡(jiǎn)單網(wǎng)絡(luò)負(fù)擔(dān)。

1、 存儲(chǔ)過(guò)程的優(yōu)點(diǎn)

A、 存儲(chǔ)過(guò)程允許標(biāo)準(zhǔn)組件式編程

存儲(chǔ)過(guò)程創(chuàng)建后可以在程序中被多次調(diào)用執(zhí)行,而不必重新編寫(xiě)該存儲(chǔ)過(guò)程的SQL語(yǔ)句。而且數(shù)據(jù)庫(kù)專(zhuān)業(yè)人員可以隨時(shí)對(duì)存儲(chǔ)過(guò)程進(jìn)行修改,但對(duì)應(yīng)用程序源代碼卻毫無(wú)影響,從而極大的提高了程序的可移植性。

B、 存儲(chǔ)過(guò)程能夠?qū)崿F(xiàn)較快的執(zhí)行速度

如果某一操作包含大量的T-SQL語(yǔ)句代碼,分別被多次執(zhí)行,那么存儲(chǔ)過(guò)程要比批處理的執(zhí)行速度快得多。因?yàn)榇鎯?chǔ)過(guò)程是預(yù)編譯的,在首次運(yùn)行一個(gè)存儲(chǔ)過(guò)程時(shí),查詢(xún)優(yōu)化器對(duì)其進(jìn)行分析、優(yōu)化,并給出最終被存在系統(tǒng)表中的存儲(chǔ)計(jì)劃。而批處理的T-SQL語(yǔ)句每次運(yùn)行都需要預(yù)編譯和優(yōu)化,所以速度就要慢一些。

C、 存儲(chǔ)過(guò)程減輕網(wǎng)絡(luò)流量

對(duì)于同一個(gè)針對(duì)數(shù)據(jù)庫(kù)對(duì)象的操作,如果這一操作所涉及到的T-SQL語(yǔ)句被組織成一存儲(chǔ)過(guò)程,那么當(dāng)在客戶(hù)機(jī)上調(diào)用該存儲(chǔ)過(guò)程時(shí),網(wǎng)絡(luò)中傳遞的只是該調(diào)用語(yǔ)句,否則將會(huì)是多條SQL語(yǔ)句。從而減輕了網(wǎng)絡(luò)流量,降低了網(wǎng)絡(luò)負(fù)載。

D、 存儲(chǔ)過(guò)程可被作為一種安全機(jī)制來(lái)充分利用

系統(tǒng)管理員可以對(duì)執(zhí)行的某一個(gè)存儲(chǔ)過(guò)程進(jìn)行權(quán)限限制,從而能夠?qū)崿F(xiàn)對(duì)某些數(shù)據(jù)訪(fǎng)問(wèn)的限制,避免非授權(quán)用戶(hù)對(duì)數(shù)據(jù)的訪(fǎng)問(wèn),保證數(shù)據(jù)的安全。

Ø 系統(tǒng)存儲(chǔ)過(guò)程

系統(tǒng)存儲(chǔ)過(guò)程是系統(tǒng)創(chuàng)建的存儲(chǔ)過(guò)程,目的在于能夠方便的從系統(tǒng)表中查詢(xún)信息或完成與更新數(shù)據(jù)庫(kù)表相關(guān)的管理任務(wù)或其他的系統(tǒng)管理任務(wù)。系統(tǒng)存儲(chǔ)過(guò)程主要存儲(chǔ)在master數(shù)據(jù)庫(kù)中,以“sp”下劃線(xiàn)開(kāi)頭的存儲(chǔ)過(guò)程。盡管這些系統(tǒng)存儲(chǔ)過(guò)程在master數(shù)據(jù)庫(kù)中,但我們?cè)谄渌麛?shù)據(jù)庫(kù)還是可以調(diào)用系統(tǒng)存儲(chǔ)過(guò)程。有一些系統(tǒng)存儲(chǔ)過(guò)程會(huì)在創(chuàng)建新的數(shù)據(jù)庫(kù)的時(shí)候被自動(dòng)創(chuàng)建在當(dāng)前數(shù)據(jù)庫(kù)中。

常用系統(tǒng)存儲(chǔ)過(guò)程有:

exec sp_databases; --查看數(shù)據(jù)庫(kù) exec sp_tables; --查看表 exec sp_columns student;--查看列 exec sp_helpIndex student;--查看索引 exec sp_helpConstraint student;--約束 exec sp_stored_procedures; exec sp_helptext 'sp_stored_procedures';--查看存儲(chǔ)過(guò)程創(chuàng)建、定義語(yǔ)句 exec sp_rename student, stuInfo;--修改表、索引、列的名稱(chēng) exec sp_renamedb myTempDB, myDB;--更改數(shù)據(jù)庫(kù)名稱(chēng) exec sp_defaultdb 'master', 'myDB';--更改登錄名的默認(rèn)數(shù)據(jù)庫(kù) exec sp_helpdb;--數(shù)據(jù)庫(kù)幫助,查詢(xún)數(shù)據(jù)庫(kù)信息 exec sp_helpdb master;

系統(tǒng)存儲(chǔ)過(guò)程示例:

--表重命名 exec sp_rename 'stu', 'stud'; select * from stud;

--列重命名 exec sp_rename 'stud.name', 'sName', 'column'; exec sp_help 'stud';

--重命名索引 exec sp_rename N'student.idx_cid', N'idx_cidd', N'index'; exec sp_help 'student';

--查詢(xún)所有存儲(chǔ)過(guò)程 select * from sys.objects where type = 'P'; select * from sys.objects where type_desc like '%pro%' and name like 'sp%';

Ø 用戶(hù)自定義存儲(chǔ)過(guò)程

1、 創(chuàng)建語(yǔ)法

create proc | procedure pro_name

[{@參數(shù)數(shù)據(jù)類(lèi)型} [=默認(rèn)值] [output],

{@參數(shù)數(shù)據(jù)類(lèi)型} [=默認(rèn)值] [output],

....

] as SQL_statements

2、 創(chuàng)建不帶參數(shù)存儲(chǔ)過(guò)程

--創(chuàng)建存儲(chǔ)過(guò)程 if (exists (select * from sys.objects where name = 'proc_get_student')) drop proc proc_get_student go create proc proc_get_student as select * from student;

--調(diào)用、執(zhí)行存儲(chǔ)過(guò)程 exec proc_get_student;

3、 修改存儲(chǔ)過(guò)程

--修改存儲(chǔ)過(guò)程 alter proc proc_get_student as select * from student;

4、 帶參存儲(chǔ)過(guò)程

--帶參存儲(chǔ)過(guò)程 if (object_id('proc_find_stu', 'P') is not null) drop proc proc_find_stu go create proc proc_find_stu(@startId int, @endId int) as select * from student where id between @startId and @endId go exec proc_find_stu 2, 4;

5、 帶通配符參數(shù)存儲(chǔ)過(guò)程

--帶通配符參數(shù)存儲(chǔ)過(guò)程 if (object_id('proc_findStudentByName', 'P') is not null) drop proc proc_findStudentByName go create proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%') as select * from student where name like @name and name like @nextName; go exec proc_findStudentByName; exec proc_findStudentByName '%o%', 't%';

6、 帶輸出參數(shù)存儲(chǔ)過(guò)程

if (object_id('proc_getStudentRecord', 'P') is not null) drop proc proc_getStudentRecord go create proc proc_getStudentRecord(

@id int, --默認(rèn)輸入?yún)?shù)

@name varchar(20) out, --輸出參數(shù)

@age varchar(20) output--輸入輸出參數(shù)

) as select @name = name, @age = age from student where id = @id and sex = @age; go -- declare @id int,

@name varchar(20),

@temp varchar(20); set @id = 7; set @temp = 1; exec proc_getStudentRecord @id, @name out, @temp output; select @name, @temp; print @name '#' @temp;

7、 不緩存存儲(chǔ)過(guò)程

--WITH RECOMPILE 不緩存 if (object_id('proc_temp', 'P') is not null) drop proc proc_temp go create proc proc_temp with recompile as select * from student; go exec proc_temp;

8、 加密存儲(chǔ)過(guò)程

--加密WITH ENCRYPTION if (object_id('proc_temp_encryption', 'P') is not null) drop proc proc_temp_encryption go create proc proc_temp_encryption with encryption as select * from student; go exec proc_temp_encryption; exec sp_helptext 'proc_temp'; exec sp_helptext 'proc_temp_encryption';

9、 帶游標(biāo)參數(shù)存儲(chǔ)過(guò)程

if (object_id('proc_cursor', 'P') is not null) drop proc proc_cursor go create proc proc_cursor

@cur cursor varying output as set @cur = cursor forward_only static for select id, name, age from student; open @cur; go --調(diào)用 declare @exec_cur cursor; declare @id int,

@name varchar(20),

@age int; exec proc_cursor @cur = @exec_cur output;--調(diào)用存儲(chǔ)過(guò)程 fetch next from @exec_cur into @id, @name, @age; while (@@fetch_status = 0) begin fetch next from @exec_cur into @id, @name, @age; print 'id: ' convert(varchar, @id) ', name: ' @name ', age: ' convert(char, @age); end close @exec_cur; deallocate @exec_cur;--刪除游標(biāo)

10、 分頁(yè)存儲(chǔ)過(guò)程

---存儲(chǔ)過(guò)程、row_number完成分頁(yè) if (object_id('pro_page', 'P') is not null) drop proc proc_cursor go create proc pro_page

@startIndex int,

@endIndex int as select count(*) from product

; select * from ( select row_number() over(order by pid) as rowId, * from product

) temp where temp.rowId between @startIndex and @endIndex go --drop proc pro_page exec pro_page 1, 4 -- --分頁(yè)存儲(chǔ)過(guò)程 if (object_id('pro_page', 'P') is not null) drop proc pro_stu go create procedure pro_stu(

@pageIndex int,

@pageSize int ) as declare @startRow int, @endRow int set @startRow = (@pageIndex - 1) * @pageSize 1 set @endRow = @startRow @pageSize -1 select * from ( select *, row_number() over (order by id asc) as number from student

) t where t.number between @startRow and @endRow; exec pro_stu 2, 2;

Ø Raiserror

Raiserror返回用戶(hù)定義的錯(cuò)誤信息,可以指定嚴(yán)重級(jí)別,設(shè)置系統(tǒng)變量記錄所發(fā)生的錯(cuò)誤。

語(yǔ)法如下:

Raiserror({msg_id | msg_str | @local_variable}

{, severity, state}

[,argument[,…n]]

[with option[,…n]]

)

# msg_id:在sysmessages系統(tǒng)表中指定的用戶(hù)定義錯(cuò)誤信息

# msg_str:用戶(hù)定義的信息,信息最大長(zhǎng)度在2047個(gè)字符。

# severity:用戶(hù)定義與該消息關(guān)聯(lián)的嚴(yán)重級(jí)別。當(dāng)使用msg_id引發(fā)使用sp_addmessage創(chuàng)建的用戶(hù)定義消息時(shí),raiserror上指定嚴(yán)重性將覆蓋sp_addmessage中定義的嚴(yán)重性。

任何用戶(hù)可以指定0-18直接的嚴(yán)重級(jí)別。只有sysadmin固定服務(wù)器角色常用或具有alter trace權(quán)限的用戶(hù)才能指定19-25直接的嚴(yán)重級(jí)別。19-25之間的安全級(jí)別需要使用with log選項(xiàng)。

# state:介于1至127直接的任何整數(shù)。State默認(rèn)值是1。

raiserror('is error', 16, 1); select * from sys.messages;

--使用sysmessages中定義的消息 raiserror(33003, 16, 1); raiserror(33006, 16, 1);

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:SQL Server存儲(chǔ)過(guò)程及一些基本用法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲欧洲精品一区二区三区不卡 | 亚洲欧洲av一区二区| 国产精品视频久久久| 欧美风情在线| 久久美女性网| 久久精品72免费观看| 亚洲无亚洲人成网站77777| 最新精品在线| 国产日产欧产精品推荐色| 国产精品国产三级国产普通话蜜臀| 久久大综合网| 久久人人爽人人爽| 久久国产乱子精品免费女| 亚洲与欧洲av电影| 一本色道久久综合亚洲精品高清| 亚洲人成毛片在线播放女女| 国产亚洲一区在线播放| 亚洲国产精品一区二区三区 | 欧美在线精品一区| 久久婷婷蜜乳一本欲蜜臀| 另类综合日韩欧美亚洲| 麻豆国产va免费精品高清在线| 久久国产88| 欧美风情在线| 欧美激情一区二区| 国产精品亚发布| 狠狠入ady亚洲精品经典电影| 日韩亚洲精品视频| 久久另类ts人妖一区二区| 国产精品国产三级欧美二区| 亚洲韩国一区二区三区| 欧美怡红院视频| 欧美日韩国产限制| 亚洲人成在线播放| 亚洲精品在线观看免费| 亚洲女女女同性video| 欧美韩日一区| 免费欧美高清视频| 国产色视频一区| 麻豆freexxxx性91精品| 国产精品sss| 亚洲美女免费精品视频在线观看| 久久久xxx| 国产午夜精品福利| 亚洲图片欧洲图片av| 欧美绝品在线观看成人午夜影视| 国产一区二区三区久久精品| 亚洲欧美另类在线观看| 午夜精品久久久久| 国产日韩在线播放| 久久亚洲精品一区二区| 永久免费毛片在线播放不卡| 老牛国产精品一区的观看方式| 在线成人免费视频| 欧美激情精品久久久久久久变态 | 久久综合中文色婷婷| 国产日产欧产精品推荐色 | 国内精品美女av在线播放| 久久久99国产精品免费| 亚洲精品九九| 可以看av的网站久久看| 伊人狠狠色丁香综合尤物| 欧美成人在线免费视频| 亚洲一区二区精品视频| 国产日韩精品一区二区三区在线| 久久夜色撩人精品| 国产精品久久午夜| 欧美91大片| 国产精品毛片在线看| 午夜亚洲伦理| 在线日韩一区二区| 蜜臀久久久99精品久久久久久| 亚洲人成网站在线播| 国产一区二区日韩精品| 欧美天堂亚洲电影院在线观看| 久久久久国产一区二区三区四区| 日韩亚洲国产精品| 伊人久久综合| 国产一区二区福利| 欧美调教vk| 亚洲视频精选在线| 亚洲精品视频免费观看| 欧美日韩午夜| 国产在线精品一区二区夜色| 国产精品久久久久久久久久三级| 国产一区二区三区在线观看精品 | 国产精品免费aⅴ片在线观看| 欧美精品国产一区| 亚洲国产精品国自产拍av秋霞| 欧美午夜精品久久久久久久| 免费看黄裸体一级大秀欧美| 久久精品欧洲| 久久久久久午夜| 欧美在线中文字幕| 久久精品国产免费看久久精品 | 国产欧美视频一区二区三区| 久久综合网色—综合色88| 亚洲专区欧美专区| 欧美一区二区视频免费观看| 一本色道久久综合狠狠躁篇怎么玩| 国产欧美日韩伦理| 狠狠色综合网站久久久久久久| 永久久久久久| 亚洲精品女人| 亚洲欧美激情四射在线日 | 亚洲一区二区不卡免费| 中文在线资源观看网站视频免费不卡| 精品不卡在线| 一区二区三区.www| 久久国产天堂福利天堂| 免费看成人av| 欧美日本韩国一区| 伊人婷婷欧美激情| 欧美成人午夜激情视频| 国产精品亚洲激情| 国产精品99久久不卡二区| 国产日韩欧美中文| 精品成人a区在线观看| 欧美国产日韩在线观看| 国模 一区 二区 三区| 欧美人体xx| 欧美午夜欧美| 亚洲激情av在线| 亚洲精品专区| 亚洲一区二区三区四区五区午夜| 国产精品日韩精品欧美精品| 国产一区二区三区久久悠悠色av| 国产精品美女久久久久aⅴ国产馆| 欧美日韩精品一区二区在线播放 | 久久亚洲免费| 久久精品国产亚洲aⅴ| 国产精品成人一区二区| 久久午夜视频| 欧美日韩国产三区| 好看的av在线不卡观看| 国产欧美日韩综合一区在线观看 | 国产综合色一区二区三区| 国产嫩草一区二区三区在线观看| 亚洲精品一区二区三区樱花| 欧美亚洲免费电影| 麻豆精品视频在线观看视频| 美女精品视频一区| 亚洲国产精品va在线看黑人| 在线综合视频| 欧美中在线观看| 欧美日韩国产色视频| 国产精品丝袜久久久久久app| 国产欧美日韩专区发布| 欧美精品在线极品| 欧美精品成人91久久久久久久| 亚洲综合99| 免费欧美日韩| 亚洲午夜精品久久久久久app| 欧美日韩91| 亚洲一区精品电影| 久久超碰97人人做人人爱| 欧美久久电影| 亚洲视频一区在线观看| 欧美系列精品| 性色av一区二区三区| 国产精品久久久久久久7电影| 亚洲图片在线观看| 国产欧美日韩视频在线观看 | 亚洲一区欧美激情| 国产精品久久久久久久app| 亚洲在线观看免费视频| 国产欧美va欧美va香蕉在| 久久嫩草精品久久久久| 最新中文字幕亚洲| 国产精品永久入口久久久| 欧美激情1区2区| 久久婷婷综合激情| 极品少妇一区二区| 久久久www成人免费无遮挡大片 | 精品91在线| 欧美日韩国产色站一区二区三区| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美伊人久久| 亚洲国产日韩在线一区模特| 国产亚洲a∨片在线观看| 欧美日本不卡视频| 欧美一区二区三区视频在线 | 免费观看日韩av| 亚洲一本视频| 亚洲专区在线| 日韩午夜视频在线观看| 亚洲第一成人在线| 欧美日韩视频免费播放| 欧美图区在线视频| 国产日韩欧美在线观看| 亚洲欧洲视频| 亚洲视频一二区| 亚洲午夜精品一区二区| 一区二区免费在线播放| 国产亚洲精品aa午夜观看| 另类天堂av| 久久久久久久久久久久久9999| 亚洲新中文字幕| 99riav久久精品riav| 99av国产精品欲麻豆|