游標和臨時表

2021-04-08 22:53:47 字數 1338 閱讀 3309

臨時表和游標的使用小總結

最近使用db的機會比較多,現做了一些小總結:

i。臨時表

臨時表與永久表相似,但臨時表儲存在 tempdb 中,當不再使用時會自動刪除。

臨時表有區域性和全域性兩種型別

2者比較:

區域性臨時表的名稱以符號 (#) 打頭

僅對當前的使用者連線是可見的

當使用者例項斷開連線時被自動刪除

全域性臨時表的名稱以符號 (##) 打頭

任何使用者都是可見的

當所有引用該錶的使用者斷開連線時被自動刪除

實際上區域性臨時表在tempdb中是有唯一名稱的

例如我們用sa登陸乙個查詢分析器,再用sa登陸另一查詢分析器

在2個查詢分析器我們都允許下面的語句:

use pubs go

select * into #tem from jobs

分別為2個使用者建立了2個區域性臨時表

我們可以從下面的查詢語句可以看到

select *

from [tempdb].[dbo].[sysobjects]

where xtype='u'

判斷臨時表的存在性: if

object_id('

tempdb..#tem') 

isnot

null

begin

print

'exists

'end

else

begin

print

'not exists

'end

1。在動態sql語句中建立的區域性臨時表,在語句執行完畢後就自動刪除了

所以下面的語句是得不到結果集的

exec('select * into #tems from jobs')

select * from #tems

2。在儲存過程中用到的臨時表在過程執行完畢後會自動刪除

但是推薦顯式刪除,這樣有利於系統

ii。游標

游標也有區域性和全域性兩種型別

區域性游標:只在宣告階段使用

全域性游標:可以在宣告它們的過程,觸發器外部使用

判斷存在性:

ifcursor_status('

global',

'游標名稱') 

=-3

andcursor_status('

local',

'游標名稱') 

=-3

begin

print

'not exists

'end

希望上面提到的知識對你有所提示

當然歡迎交流和指正

臨時表和游標的使用小總結

最近使用db的機會比較多,現做了一些小總結 臨時表與永久表相似,但臨時表儲存在 tempdb 中,當不再使用時會自動刪除。臨時表有區域性和全域性兩種型別 2者比較 區域性臨時表的名稱以符號 打頭 僅對當前的使用者連線是可見的 當使用者例項斷開連線時被自動刪除 全域性臨時表的名稱以符號 打頭 任何使用...

臨時表和游標的使用小總結

sql server2005 transact sql 新兵器學習總結之 總結 最近使用db的機會比較多,現做了一些小總結 i。臨時表 臨時表與永久表相似,但臨時表儲存在 tempdb 中,當不再使用時會自動刪除。臨時表有區域性和全域性兩種型別 2者比較 區域性臨時表的名稱以符號 打頭 僅對當前的使...

儲存過程,游標,迴圈,臨時表

create procedure hr attabn qry2 d date nvarchar 10 null,deptno nvarchar 1000 null as begin declare sql nvarchar 1000 建立臨時表 create table mytemptable de...