Heim > Datenbank > MySQL-Tutorial > Hauptteil

Fassen Sie die Verwendung temporärer SQL Server-Tabellen und -Cursor zusammen

巴扎黑
Freigeben: 2017-05-21 18:38:27
Original
1355 Leute haben es durchsucht

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
Nach dem Login kopieren

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'
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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'
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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'
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!