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)刪除。這對于存儲(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ù)的場景。
創(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í)(對于局部臨時(shí)存儲(chǔ)過程)或最后一個(gè)引用它的會(huì)話結(jié)束時(shí)(對于全局臨時(shí)存儲(chǔ)過程)自動(dòng)刪除。
- 臨時(shí)存儲(chǔ)過程通常用于存儲(chǔ)臨時(shí)邏輯或處理臨時(shí)數(shù)據(jù),以減少對永久數(shù)據(jù)庫結(jié)構(gòu)的依賴和修改。
到此這篇關(guān)于SQLServer臨時(shí)存儲(chǔ)過程及示例的文章就介紹到這了,更多相關(guān)SQL 臨時(shí)存儲(chǔ)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server誤區(qū)30日談 第20天 破壞日志備份鏈之后,需要一個(gè)完整備份來重新開始日志鏈
事務(wù)日志備份會(huì)備份自上次事務(wù)日志備份以來所有的事務(wù)日志(如果從來沒有過日志備份的話,那就從上一次完整備份開始)。有好幾種類型的操作會(huì)中斷事務(wù)日志的連續(xù)性,也就是說除非重新開始新的日志鏈,SQL Server無法再進(jìn)行日志備份2013-01-01
無法連接到SQL SERVER數(shù)據(jù)庫問題及解決
當(dāng)數(shù)據(jù)庫連接失敗時(shí),需要從網(wǎng)絡(luò)情況、防火墻設(shè)置、服務(wù)器配置、登錄用戶名等多個(gè)方面進(jìn)行排查,具體包括檢查網(wǎng)絡(luò)連接、端口、SQLSERVER配置管理器、登錄名、身份驗(yàn)證模式等步驟2026-05-05
SQL 尚未定義空閑 CPU 條件 - OnIdle 作業(yè)計(jì)劃將不起任何作用
今天在配置sql server 代理服務(wù)器的計(jì)劃任務(wù)的時(shí)候發(fā)現(xiàn)了日志中提示這個(gè)SQL 尚未定義空閑 CPU 條件 - OnIdle 作業(yè)計(jì)劃將不起任何作用信息導(dǎo)致無法執(zhí)行計(jì)劃任務(wù),那么可以按照下面的方法解決即可2021-06-06
SQLSERVER ISNULL 函數(shù)與判斷值是否為空的sql語句
由于服務(wù)器設(shè)置不當(dāng)導(dǎo)致sqlserver的某個(gè)字段為空,導(dǎo)致部分內(nèi)容顯示失敗,所有這里需要將為空的字符替換為制定的字符2013-11-11
sqlserver 臨時(shí)表 Vs 表變量 詳細(xì)介紹
說臨時(shí)表和表變量,這是一個(gè)古老的話題,我們在網(wǎng)上也找到很多的資料闡述兩者的特征,優(yōu)點(diǎn)與缺點(diǎn)2011-11-11
SQL 中sp_executesql存儲(chǔ)過程的使用幫助
建議使用 sp_executesql 而不要使用 EXECUTE 語句執(zhí)行字符串。支持參數(shù)替換不僅使 sp_executesql 比 EXECUTE 更通用,而且還使 sp_executesql 更有效,因?yàn)樗傻膱?zhí)行計(jì)劃更有可能被 SQL Server 重新使用。2011-04-04
SQL Server免費(fèi)版的安裝以及使用SQL Server Management Studio(SSMS)連接數(shù)據(jù)庫的
這篇文章主要介紹了SQL Server免費(fèi)版的安裝以及使用SQL Server Management Studio(SSMS)連接數(shù)據(jù)庫的圖文方法,需要的朋友可以參考下2020-02-02

