Maison  >  Article  >  base de données  >  Résumer l'utilisation des tables temporaires et des curseurs SQL Server

Résumer l'utilisation des tables temporaires et des curseurs SQL Server

巴扎黑
巴扎黑original
2017-05-21 18:38:271315parcourir

Cet article présente principalement un résumé de l'utilisation des tables et curseurs temporaires de Sql Server. Les amis dans le besoin peuvent s'y référer

1 Table temporaire

Temporaire. table et les tables permanentes sont similaires, mais les tables temporaires sont stockées dans tempdb et sont automatiquement supprimées lorsqu'elles ne sont plus utilisées.
Les tables temporaires ont deux types : locales et globales

Comparaison des deux :

Le nom de la table temporaire locale commence par le symbole (#)
Uniquement pour La connexion utilisateur actuelle est visible
Supprimée automatiquement lorsque l'instance utilisateur se déconnecte
Le nom de la table temporaire globale commence par le symbole (##)
Visible par tout utilisateur
Quand tous références La table est automatiquement supprimée lorsque l'utilisateur se déconnecte
En fait, la table temporaire locale a un nom unique dans tempdb
Par exemple, nous utilisons sa pour nous connecter à un analyseur de requêtes, puis utilisons sa pour nous connecter vers un autre analyseur de requêtes

Nous autorisons les instructions suivantes dans les deux analyseurs de requêtes :


use pubs
go
select * into #tem from jobs

Création de 2 tables temporaires locales pour 2 utilisateurs respectivement
Nous pouvons voir à partir de l'instruction de requête suivante


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

pour déterminer l'existence de la table temporaire :


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

Conseils spéciaux :
1. La table temporaire locale créée dans l'instruction SQL dynamique est automatiquement supprimée après l'exécution de l'instruction
, donc l'instruction suivante n'obtiendra pas l'ensemble de résultats


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

2. La table temporaire utilisée dans la procédure stockée sera automatiquement supprimée
une fois le processus terminé, mais il est recommandé de la supprimer explicitement, ce qui est bénéfique pour le système

ii. Curseurs
Les curseurs ont également deux types : locaux et globaux
Curseurs locaux : utilisés uniquement dans la phase de déclaration
Curseurs globaux : peuvent être utilisés dans le processus de déclaration et en dehors des déclencheurs

pour déterminer l'existence :


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

Déterminer l'existence de la table temporaire :


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

Conseils spéciaux :
1. La table temporaire locale créée dans l'instruction SQL dynamique est automatiquement supprimée après l'exécution de l'instruction
, donc l'instruction suivante n'obtiendra pas l'ensemble de résultats


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

2. La table temporaire utilisée dans la procédure stockée sera automatiquement supprimée
une fois le processus terminé, mais il est recommandé de la supprimer explicitement, ce qui est bénéfique pour le système

ii. Curseurs
Les curseurs ont également deux types : locaux et globaux
Curseurs locaux : utilisés uniquement dans la phase de déclaration
Curseurs globaux : peuvent être utilisés dans le processus de déclaration et en dehors des déclencheurs

pour déterminer l'existence :


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

Déterminer l'existence de la table temporaire :


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

Conseils particuliers :
1. La table temporaire locale créée dans l'instruction SQL dynamique est automatiquement supprimée après l'exécution de l'instruction
, donc l'instruction suivante n'obtiendra pas l'ensemble de résultats


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

2. La table temporaire utilisée dans la procédure stockée sera automatiquement supprimée
une fois le processus terminé, mais il est recommandé de la supprimer explicitement, ce qui est bénéfique pour le système

ii. Curseurs
Les curseurs ont également deux types : locaux et globaux
Curseurs locaux : utilisés uniquement dans la phase de déclaration
Curseurs globaux : peuvent être utilisés dans le processus de déclaration et en dehors des déclencheurs

pour déterminer l'existence :


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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn