SQLServer臨時(shí)存儲(chǔ)過程及示例
在SQL Server中,臨時(shí)存儲(chǔ)過程可以分為兩種類型:局部臨時(shí)存儲(chǔ)過程(以單個(gè)井號(hào) #
開頭)和全局臨時(shí)存儲(chǔ)過程(以兩個(gè)井號(hào) ##
開頭)。
局部臨時(shí)存儲(chǔ)過程
局部臨時(shí)存儲(chǔ)過程只在創(chuàng)建它的會(huì)話中可見,并且在會(huì)話結(jié)束時(shí)自動(dòng)刪除。這對(duì)于存儲(chǔ)特定于會(huì)話的邏輯或數(shù)據(jù)非常有用。
創(chuàng)建局部臨時(shí)存儲(chǔ)過程的示例:
-- 創(chuàng)建一個(gè)局部臨時(shí)存儲(chǔ)過程 CREATE PROCEDURE #MyLocalTempProc AS BEGIN SELECT 'Hello, this is a local temporary stored procedure.' AS Message; END GO -- 執(zhí)行局部臨時(shí)存儲(chǔ)過程 EXEC #MyLocalTempProc; -- 注意:如果嘗試在另一個(gè)會(huì)話中執(zhí)行這個(gè)存儲(chǔ)過程,會(huì)收到錯(cuò)誤,因?yàn)樗辉趧?chuàng)建它的會(huì)話中可見。
全局臨時(shí)存儲(chǔ)過程
全局臨時(shí)存儲(chǔ)過程在創(chuàng)建它的會(huì)話中可見,但也可以在創(chuàng)建它的會(huì)話結(jié)束后由其他會(huì)話訪問,直到最后一個(gè)引用它的會(huì)話結(jié)束并且它沒有被執(zhí)行中的任何事務(wù)所使用。這使得全局臨時(shí)存儲(chǔ)過程適用于跨多個(gè)會(huì)話共享邏輯或數(shù)據(jù)的場(chǎng)景。
創(chuàng)建全局臨時(shí)存儲(chǔ)過程的示例:
-- 創(chuàng)建一個(gè)全局臨時(shí)存儲(chǔ)過程 CREATE PROCEDURE ##MyGlobalTempProc AS BEGIN SELECT 'Hello, this is a global temporary stored procedure.' AS Message; END GO -- 在創(chuàng)建它的會(huì)話中執(zhí)行全局臨時(shí)存儲(chǔ)過程 EXEC ##MyGlobalTempProc; -- 可以在另一個(gè)會(huì)話中執(zhí)行全局臨時(shí)存儲(chǔ)過程(如果第一個(gè)會(huì)話已經(jīng)結(jié)束) -- 注意:這里為了演示,通常你需要在另一個(gè)會(huì)話中執(zhí)行下面的命令 -- EXEC ##MyGlobalTempProc; -- 注意:全局臨時(shí)存儲(chǔ)過程在最后一個(gè)引用它的會(huì)話結(jié)束后被刪除。
注意事項(xiàng)
- 臨時(shí)存儲(chǔ)過程不會(huì)出現(xiàn)在系統(tǒng)存儲(chǔ)過程目錄(如
sys.procedures
)中,因此你不能用通常查詢系統(tǒng)視圖的方式來發(fā)現(xiàn)它們。 - 局部臨時(shí)存儲(chǔ)過程的名字在當(dāng)前會(huì)話中是唯一的,而全局臨時(shí)存儲(chǔ)過程的名字在SQL Server實(shí)例中是唯一的,但是僅限于未結(jié)束且未被引用的會(huì)話。
- 臨時(shí)存儲(chǔ)過程在執(zhí)行結(jié)束后不會(huì)自動(dòng)刪除,但是會(huì)在會(huì)話結(jié)束時(shí)(對(duì)于局部臨時(shí)存儲(chǔ)過程)或最后一個(gè)引用它的會(huì)話結(jié)束時(shí)(對(duì)于全局臨時(shí)存儲(chǔ)過程)自動(dòng)刪除。
- 臨時(shí)存儲(chǔ)過程通常用于存儲(chǔ)臨時(shí)邏輯或處理臨時(shí)數(shù)據(jù),以減少對(duì)永久數(shù)據(jù)庫結(jié)構(gòu)的依賴和修改。
到此這篇關(guān)于SQLServer臨時(shí)存儲(chǔ)過程及示例的文章就介紹到這了,更多相關(guān)SQL 臨時(shí)存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server清除日志文件ERRORLOG和刪除tempdb.mdf
數(shù)據(jù)庫再使用一段時(shí)間后,日志文件會(huì)增大,特別是在磁盤容量不足的情況下,更是需要縮減,以下為縮減方法:如果可以停止 SQL Server 服務(wù),那么可以采取更直接的方式來縮減 ERRORLOG 和 tempdb.mdf 文件的大小,2025-03-03SQL Server 2005作業(yè)設(shè)置定時(shí)任務(wù)
這篇文章主要介紹了SQL Server 2005作業(yè)設(shè)置定時(shí)任務(wù)的相關(guān)詳細(xì)步驟,需要的朋友可以參考下2017-01-01更改SQL Server更改當(dāng)前數(shù)據(jù)庫的所有者:sp_changedbowner
更改SQL Server更改當(dāng)前數(shù)據(jù)庫的所有者:sp_changedbowner...2007-02-02SQLServer 2000 數(shù)據(jù)庫同步詳細(xì)步驟[兩臺(tái)服務(wù)器]
成功實(shí)現(xiàn)SQL Server 2000 數(shù)據(jù)庫同步[一臺(tái)服務(wù)器,一臺(tái)動(dòng)態(tài)IP的備份機(jī)],詳細(xì)步驟說明。2010-07-07圖解SSIS批量導(dǎo)入Excel文件的實(shí)現(xiàn)方法
本篇文章是對(duì)SSIS批量導(dǎo)入Excel文件的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06解決連接Sql?Server時(shí)報(bào)錯(cuò):無法通過使用安全套接字層加密與SQL?Server建立安全連接
這篇文章主要給大家介紹了關(guān)于解決連接Sql?Server時(shí)報(bào)錯(cuò):無法通過使用安全套接字層加密與SQL?Server建立安全連接的相關(guān)資料,需要的朋友可以參考下2024-01-01SqlServer獲取存儲(chǔ)過程返回值的實(shí)例
SqlServer獲取存儲(chǔ)過程返回值的實(shí)例,需要的朋友可以參考一下2013-04-04SQL SERVER先判斷視圖是否存在然后再創(chuàng)建視圖的語句
SQL SERVER中先判斷視圖是否存在,使用IF NOT EXISTS,然后再創(chuàng)建視圖,使用create view,整個(gè)過程如下2014-08-08