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
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
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
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 vonFassen Sie die Verwendung temporärer SQL Server-Tabellen und -Cursor zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!