臨時儲存過程

2022-12-11 10:33:02 字數 1104 閱讀 4073

2009-12-20 17:07

與儲存過程相關的臨時儲存過程相當於與表相關的臨時表。當您希望在有限的時間範圍內重用儲存過程的執行計畫時會用到它們。雖然使用標準使用者自定義儲存過程也能獲得同樣的效果,但是臨時儲存過程是更好的解決方案,因為您不必擔心維護問題(如刪除儲存過程)。

臨時儲存過程駐留在tempdb資料庫中,名稱前面必須用字首#。建立臨時儲存過程的方式和建立使用者自定義儲存過程的方式相同。唯一的不同之處在於名稱前面要加#號。

這個字首給了伺服器乙個訊號,通知伺服器把過程作為臨時儲存過程建立。這種儲存過程只能在建立它的會話中使用。當會話關閉時,它就會自動被刪除。

這也正是此類儲存過程常被稱為私有臨時儲存過程的原因。

下面的**示例建立乙個私有臨時儲存過程:

create procedure #

@make varchar(50),

@model varchar(50)

asselect eqid

from

where make = @make

and model = @model

return

注意:有時候,tempdb中的所有使用者自定義儲存過程都是指臨時儲存過程。這是不正確的,因為這兩者之間有重要區別。

例如,所有授權使用者都可以訪問tempdb資料庫中儲存的使用者自定義儲存過程,而不僅限於建立它們的會話。這些儲存過程會一直存在於tempdb中,直到關閉伺服器,而此時tempdb中的所有內容都已被清除。

全域性臨時儲存過程與臨時儲存過程相對,其關係就好比全域性臨時表和私有臨時表的關係。它們也駐留在tempdb資料庫中,但是它們用了字首##。它們的建立方式與建立臨時儲存過程的方式相同。

唯一的區別在於它們對所有會話都是可見和可用的。事實上,訪問它們不需要許可權,擁有者甚至無法拒絕其他使用者訪問它們。

當關閉建立這個儲存過程的會話時,新的會話不能執行這個儲存過程。當儲存過程已經執行的所有例項結束時,這個過程會被自動刪除。

下面的**示例建立乙個全域性臨時儲存過程:

create procedure ##apequipment_insert

@make varchar(50),

@model varchar(50),

@eqtype varchar(50)

實驗指導三 儲存過程

實驗三 儲存過程與游標 一 實驗目的 1 通過練習正確理解儲存過程的作用,如何產生作用 2 了解如何在企業管理器和查詢分析器中建立儲存過程 3 通過練習熟悉建立儲存過程的語句,解決實際問題 二 實驗型別 設計型三 實驗環境 cpu 2.0 ghz,1.0 g memory windows2003,s...

游標 儲存過程 觸發器

本文介紹了游標 儲存過程 觸發器中利於sql server高效處理資料的方法。關鍵詞 sql server 游標 儲存過程 觸發器 高效處理資料 sql server是一種關係型資料庫管理系統,能夠與windows平台緊密整合,以一種簡單的方式來完成各種複雜的任務。sql server管理大量資料,...

儲存過程與觸發器

附頁 例8 1 建立乙個儲存過程,輸出所有學生的姓名,課程名稱和期末成績資訊。create procedure student score asselect sname,cname,final from student s,course c,score sc where and 例8 2 建立乙個儲...