Types de curseurs
ODBC définit quatre types de curseurs pris en charge par Microsoft SQL Server et le pilote ODBC de SQL Server Native Client. Ces curseurs diffèrent au niveau de leur capacité à détecter les modifications effectuées dans l'ensemble de résultats ainsi que dans les ressources qu'ils utilisent, par exemple la mémoire et l'espace de stockage dans tempdb. Un curseur peut détecter des modifications apportées à des lignes uniquement lorsqu'il tente d'extraire à nouveau ces lignes ; il n'existe aucun moyen pour la source de données d'informer le curseur des modifications apportées aux lignes en cours d'extraction. La capacité d'un curseur à détecter des modifications qui n'ont pas été apportées par le biais du curseur est également influencée par le niveau d'isolation de la transaction.
Les quatre types de curseurs ODBC pris en charge par SQL Server sont les suivants :
Les curseurs avant uniquement ne prennent pas en charge le défilement, mais seulement l'extraction de lignes en séquence à partir du début jusqu'à la fin du curseur.
Les curseurs statiques sont intégrés à tempdb lorsque le curseur est ouvert. Ils affichent toujours l'ensemble de résultats tel qu'il était au moment où le curseur a été ouvert. Ils ne reflètent jamais les modifications apportées aux données. Les curseurs statiques SQL Server sont toujours en lecture seule. Étant donné qu'un curseur côté serveur statique est généré en tant que table de travail dans tempdb, la taille du jeu de résultats du curseur ne peut pas dépasser la taille des lignes maximale autorisée par SQL Server.
L'appartenance et l'ordre des lignes dans le jeu de résultats des curseurs de jeux de clés sont fixés au moment de l'ouverture du curseur. Les modifications aux colonnes non-clés sont visibles à travers le curseur.
Les curseurs dynamiques sont le contraire des curseurs statiques. Les curseurs dynamiques reflètent toutes les modifications apportées aux lignes de leur jeu de résultats. Les valeurs des données, l'ordre et l'appartenance des lignes du jeu de résultats peuvent changer à chaque extraction.