Heim  >  Artikel  >  Datenbank  >  Einführung in die Verwendung temporärer Tabellen und Cursorinstanzen von SQL Server

Einführung in die Verwendung temporärer Tabellen und Cursorinstanzen von SQL Server

巴扎黑
巴扎黑Original
2017-08-11 15:31:171534Durchsuche

Dieser Artikel stellt hauptsächlich eine Zusammenfassung der Verwendung temporärer SQL Server-Tabellen und -Cursor vor. Freunde in Not können darauf verweisen

Temporäre Tabelle

Temporär Tabelle und permanente Tabellen sind ähnlich, temporäre Tabellen werden jedoch in tempdb gespeichert und automatisch gelöscht, wenn sie nicht mehr verwendet werden.
Temporäre Tabellen gibt es in zwei Typen: lokal und global

Vergleich der beiden:

Der Name der lokalen temporären Tabelle beginnt mit dem Symbol (#)
Nur ​​für Die aktuelle Benutzerverbindung ist sichtbar
Automatisch gelöscht, wenn die Benutzerinstanz die Verbindung trennt
Der Name der globalen temporären Tabelle beginnt mit dem Symbol (##)
Für jeden Benutzer sichtbar
Wenn alle Referenzen Die Tabelle wird automatisch gelöscht, wenn der Benutzer die Verbindung trennt
Tatsächlich hat die lokale temporäre Tabelle in tempdb einen eindeutigen Namen
Zum Beispiel verwenden wir sa, um uns bei einem Abfrageanalysator anzumelden, und verwenden dann sa, um uns anzumelden zu einem anderen Abfrageanalysator

Wir erlauben die folgenden Anweisungen in beiden Abfrageanalysatoren:


use pubs
go
select * into #tem from jobs

Erstellt 2 lokale temporäre Tabellen für jeweils 2 Benutzer
Wir können der folgenden Abfrageanweisung


SELECT * FROM [tempdb].[dbo].[sysobjects] 
where xtype='u'

entnehmen, um die Existenz der temporären Tabelle zu bestimmen:


if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end

Besondere Tipps:
1. Die in der dynamischen SQL-Anweisung erstellte lokale temporäre Tabelle wird nach Ausführung der Anweisung
automatisch gelöscht, sodass die folgende Anweisung nicht die Ergebnismenge


exec('select * into #tems from jobs')
select * from #tems
erhält

2. Die in der gespeicherten Prozedur verwendete temporäre Tabelle wird automatisch gelöscht
, nachdem der Vorgang abgeschlossen ist. Es wird jedoch empfohlen, sie explizit zu löschen, was für das System von Vorteil ist

ii. Cursor
Es gibt auch zwei Typen von Cursorn: lokal und global
Lokale Cursor: werden nur in der Deklarationsphase verwendet
Globale Cursor: können bei der Deklaration verwendet werden

wird verwendet, um die Existenz zu bestimmen:


if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end
SELECT * FROM [tempdb].[dbo].[sysobjects] where xtype='u'

Bestimmen Sie die Existenz der temporären Tabelle:


if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end

Besondere Tipps:
1. Die in der dynamischen SQL-Anweisung erstellte lokale temporäre Tabelle wird nach Ausführung der Anweisung
automatisch gelöscht, sodass die folgende Anweisung nicht die Ergebnismenge


exec('select * into #tems from jobs')
select * from #tems
erhält

2. Die in der gespeicherten Prozedur verwendete temporäre Tabelle wird automatisch gelöscht
, nachdem der Vorgang abgeschlossen ist. Es wird jedoch empfohlen, sie explizit zu löschen, was für das System von Vorteil ist

ii. Cursor
Cursor haben auch zwei Typen: lokal und global
Lokale Cursor: werden nur in der Deklarationsphase verwendet
Globale Cursor: können im Deklarationsprozess und bei externen Triggern

verwendet werden Existenz bestimmen:


if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end
SELECT * FROM [tempdb].[dbo].[sysobjects] where xtype='u'

Existenz der temporären Tabelle bestimmen:


if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end

Besondere Tipps:
1. Die in der dynamischen SQL-Anweisung erstellte lokale temporäre Tabelle wird nach Ausführung der Anweisung
automatisch gelöscht, sodass die folgende Anweisung nicht die Ergebnismenge


exec('select * into #tems from jobs')
select * from #tems
erhält

2. Die in der gespeicherten Prozedur verwendete temporäre Tabelle wird automatisch gelöscht
, nachdem der Vorgang abgeschlossen ist. Es wird jedoch empfohlen, sie explizit zu löschen, was für das System von Vorteil ist

ii. Cursor
Cursor haben auch zwei Typen: lokal und global
Lokale Cursor: werden nur in der Deklarationsphase verwendet
Globale Cursor: können im Deklarationsprozess und bei externen Triggern

verwendet werden Existenz bestimmen:


if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung temporärer Tabellen und Cursorinstanzen von SQL Server. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn