解讀SQL存儲(chǔ)過程入門級教程(5)_Mssql數(shù)據(jù)庫教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:按指定排列順序獲取數(shù)據(jù)的sql語句測試table create table table1 (id int,name char) insert into table1 select 1,'q' union all select 2,'r' union all select 3,'3' union all select 4,'5' 要求按指定的id順序(比如2,1,4,3)排列獲取table1的數(shù)據(jù) 方法1: 使用union all,但是有256條數(shù)據(jù)的
臨時(shí)存儲(chǔ)過程
SQL Server 支持兩種臨時(shí)過程:局部臨時(shí)過程和全局臨時(shí)過程。局部臨時(shí)過程只能由創(chuàng)建該過程的連接使用。全局臨時(shí)過程則可由所有連接使用。局部臨時(shí)過程在當(dāng)前會(huì)話結(jié)束 時(shí)自動(dòng)除去。全局臨時(shí)過程在使用該過程的最后一個(gè)會(huì)話結(jié)束時(shí)除去。通常是在創(chuàng)建該過程的會(huì)話結(jié)束時(shí)。
臨時(shí)過程用 # 和 ## 命名,可以由任何用戶創(chuàng)建。創(chuàng)建過程后,局部過程的所有者是唯一可以使用該過程的用戶。執(zhí)行局部臨時(shí)過程的權(quán)限不能授予其他用戶。如果創(chuàng)建了全局臨時(shí)過 程,則所有用戶均可以訪問該過程,權(quán)限不能顯式廢除。只有在 tempdb 數(shù)據(jù)庫中具有顯式 CREATE PROCEDURE 權(quán)限的用戶,才可以在該數(shù)據(jù)庫中顯式創(chuàng)建臨時(shí)過程(不使用編號(hào)符命名)�?梢允谟杌驈U除這些過程中的權(quán)限。
說明 頻繁使用臨時(shí)存儲(chǔ)過程會(huì)在 tempdb 中的系統(tǒng)表上產(chǎn)生爭用,從而對性能產(chǎn)生負(fù)面影響。建議使用 sp_executesql 代替。sp_executesql 不在系統(tǒng)表中存儲(chǔ)數(shù)據(jù),因此可以避免這一問題。
自動(dòng)執(zhí)行存儲(chǔ)過程
SQL Server 啟動(dòng)時(shí)可以自動(dòng)執(zhí)行一個(gè)或多個(gè)存儲(chǔ)過程。這些存儲(chǔ)過程必須由系統(tǒng)管理員創(chuàng)建,并在 sysadmin 固定服務(wù)器角色下作為后臺(tái)過程執(zhí)行。這些過程不能有任何輸入?yún)?shù)。
對啟動(dòng)過程的數(shù)目沒有限制,但是要注意,每個(gè)啟動(dòng)過程在執(zhí)行時(shí)都會(huì)占用一個(gè)連接。如果必須在啟動(dòng)時(shí)執(zhí)行多個(gè)過程,但不需要并行執(zhí)行,則可以指定一個(gè)過程作為啟動(dòng)過程,讓該過程調(diào)用其它過程。這樣就只占用一個(gè)連接。
在啟動(dòng)時(shí)恢復(fù)了最后一個(gè)數(shù)據(jù)庫后,即開始執(zhí)行存儲(chǔ)過程。若要跳過這些存儲(chǔ)過程的執(zhí)行,請將啟動(dòng)參數(shù)指定為跟蹤標(biāo)記 4022。如果以最低配置啟動(dòng) SQL Server(使用 -f 標(biāo)記),則啟動(dòng)存儲(chǔ)過程也不會(huì)執(zhí)行。
若要?jiǎng)?chuàng)建啟動(dòng)存儲(chǔ)過程,必須作為 sysadmin 固定服務(wù)器角色的成員登錄,并在 master 數(shù)據(jù)庫中創(chuàng)建存儲(chǔ)過程。
使用 sp_procoption 可以:
將現(xiàn)有存儲(chǔ)過程指定為啟動(dòng)過程。
停止在 SQL Server 啟動(dòng)時(shí)執(zhí)行過程。
查看 SQL Server 啟動(dòng)時(shí)執(zhí)行的所有過程的列表。
存儲(chǔ)過程嵌套
存儲(chǔ)過程可以嵌套,即一個(gè)存儲(chǔ)過程可以調(diào)用另一個(gè)存儲(chǔ)過程。在被調(diào)用過程開始執(zhí)行時(shí),嵌套級將增加,在被調(diào)用過程執(zhí)行結(jié)束后,嵌套級將減少。如果超出最大的嵌套級,會(huì)使整個(gè)調(diào)用過程鏈?zhǔn) ?捎?nbsp;@@NESTLEVEL 函數(shù)返回當(dāng)前的嵌套級。
若要估計(jì)編譯后的存儲(chǔ)過程大小,請使用下列性能監(jiān)視計(jì)數(shù)器。
* 各種分類的高速緩存對象均可以使用這些計(jì)數(shù)器,包括特殊 sql、準(zhǔn)備 sql、過程、觸發(fā)器等。
sql_statement 限制
除了 SET SHOWPLAN_TEXT 和 SET SHOWPLAN_ALL 之外(這兩個(gè)語句必須是批處理中僅有的語句),任何 SET 語句均可以在存儲(chǔ)過程內(nèi)部指定。所選擇的 SET 選項(xiàng)在存儲(chǔ)過程執(zhí)行過程中有效,之后恢復(fù)為原來的設(shè)置。
分享:總結(jié)經(jīng)典常用的SQL語句(2)向表中添加一個(gè)新記錄,你要使用SQLINSERT語句。 這里有一個(gè)如何使用這種語句的例子: INSERTmytable(mycolumn)VALUES(‘somedata’) 這個(gè)語句把字符串’somedata’插入表mytable的mycolumn字段中。將要被插入數(shù)據(jù)的字段的名字在第一個(gè)括號(hào)中指定,實(shí)際的數(shù)
相關(guān)Mssql數(shù)據(jù)庫教程:
- 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ù)庫,提示 無法為該請求檢索數(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ù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 談SQL Server數(shù)據(jù)庫管理常用的SQL和T-SQL語句
- order by newid() 各種數(shù)據(jù)庫隨機(jī)查詢的方法
- 查詢表中某字段有重復(fù)記錄個(gè)數(shù)的方法
- 教你SQL Server日志清除的兩種方法
- SQL Server中怎么得到自動(dòng)編號(hào)字段解析
- SQL Server 2005 CE軟件環(huán)境需求
- SQL Server數(shù)據(jù)庫備份和恢復(fù)說明
- 解答SQL Server日志文件損壞嚴(yán)重的問題
- 怎樣用SQL Server事件探查器創(chuàng)建跟蹤
- 詳解SQL Server 2008中的聯(lián)機(jī)事務(wù)處理
猜你也喜歡看這些
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫以及函數(shù)、存儲(chǔ)過程的介紹
- mysql密碼過期導(dǎo)致連接不上mysql
- MySQL的安全問題從安裝開始說起
- Mysql建表與索引使用規(guī)范詳解
- mysql與mysqli的區(qū)別與用法
- MYSQL索引無效和索引有效的詳細(xì)介紹
- 解決sql server 2005 express中sa不能登錄
- mysql常用設(shè)置:字符集編碼、自動(dòng)完成(自動(dòng)提示)、監(jiān)聽外網(wǎng)ip
- jdbc調(diào)用mysql存儲(chǔ)過程實(shí)現(xiàn)代碼
- mysql 定時(shí)更新表字段列的值狀態(tài)
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-解讀SQL存儲(chǔ)過程入門級教程(5)
。