Gestion de curseurs XLAN (412)
Gestion des curseurs
Changement Harmony 412
Cette version d’Harmony apporte les principales évolutions suivantes.
une gestion différenciée des curseurs SQL est mise en place par défaut. Voir les détails dans le chapitre suivant
le développeur peut, pour optimiser les lectures, forcer le type de curseur. Voir les détails dans le chapitre suivant
l’ancien mode MARS (voir plus bas) existe toujours, et reste actif si "mars_connection=yes" ; le nouveau mode est cependant préconisé
Les curseurs et leur utilisation par XLanSql
Voici les principaux curseur et leur application dans XLanSql
Type de curseur | Détails | Impact dans XLanSql et le développement |
---|---|---|
Forward (en avant) SQL_CURSOR_FORWARD_ONLY |
| UTILISE EN HARMONY 412 Tous les SEEK (hseek, fseek) sont fait dans ce mode SQL_CURSOR_FORWARD_ONLY Dès le développement, et lorsque le code déroule une lecture, il est possible de forcer ce curseur pour accélérer le traitement à l’exécution |
Dynamic (dynamique) SQL_CURSOR_DYNAMIC |
| UTILISE EN HARMONY 412 Tous les READ/PREAD (hread,hpread,fread,fpread) sont fait dans ce mode SQL_CURSOR_DYNAMIC |
Static (statique) SQL_CURSOR_STATIC | Les curseurs statiques sont générés dans 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. | NON UTILISE DANS HARMONY OU L’ERP (ne correspond pas aux usages habituels) |
Driven (piloté) SQL_CURSOR_KEYSET_DRIVEN | Le pilote enregistre et utilise les clés pour le nombre de lignes spécifiées dans l’attribut d’instruction SQL_ATTR_KEYSET_SIZE. | NON UTILISE DANS HARMONY OU L’ERP (ne correspond pas aux usages habituels) |
Lors du développement on pourra forcer avec la propriété .CURSORTYPE la lecture en mode forward (lorsque le cas s’y prête)
tdfXXX.CursorType = SQL_CURSOR_FORWARD_ONLY
Attention, en SQL_CURSOR_FORWARD_ONLY forcé, il est interdit de faire un rewrite/delete sur une ligne lue. Cela provoque une erreur fatale.,
Paramétrage au menu ERP
Le nouveau mode de lecture est désormais actif par défaut mais peut être désactiver via le paramétrage menu pour revenir à l’ancien fonctionnement.
Pour le désactiver, mettre la valeur 9 au lieu de 0 ou retirer tout simplement le paramètre MarsSqlCursor
Valeurs possible du paramètre Curseur :
0 = SQL_CURSOR_FORWARD_ONLY
1 = SQL_CURSOR_KEYSET_DRIVEN
2 = SQL_CURSOR_DYNAMIC
3 = SQL_CURSOR_STATIC
Autre = Désactive l’utilisation