Quand on doit travailler avec des valeurs dépassant 64 Ko, on peut déclarer une variable locator, comme illustré en C. On utilise alors une carte D sans type ou longueur de donnée et on spécifie le mot-clé SqlType(Clob_Locator). On n'indique pas de longueur pour SqlType quand on utilise Clob_Locator. Le
Le mot-clé Clob_Locator
précompilateur
SQL/400 commente la carte D d’origine et en génère une comme celle-ci :
DCLOB1LOC 10U 0
Notons que la variable générée a le même nom et est un entier positif. Quand on
extrait une colonne CLOB dans une variable locator, comme illustré en G (voir
la ligne avec la variable hôte :Clob1Loc), le runtime SQL/400 place un pointeur
dans la variable hôte. Ce pointeur fait référence à une chaîne statique à laquelle
on peut accéder avec d’autres instructions SQL. On ne peut pas utiliser des opérations
RPG IV sur des caractères ou des chaînes avec une variable locator.
Mais on peut utiliser la variable locator dans des opérations sur les chaînes
SQL/400. L’une des façons les plus simples d’utiliser un locator se trouve dans
une fonction Left ou SubStr, comme illustré en H. Dans l’instruction
Set :Char2Var =
Left( :Clob1Loc, Length( :Clob1Loc ) )
L’utilisation d’un locator mérite quelques précisions
le résultat de la sous-chaîne Left est placé dans Char2Var, qui est déclaré (en
A) comme une variable caractère RPG IV de longueur variable. La variable locator
Clob1Loc est utilisée deux fois dans l’expression, une fois comme argument chaîne
pour la fonction Left et une fois comme argument chaîne pour la fonction Length.
Dans des fonctions SQL/400, on peut définir un locator partout où une chaîne est
autorisée. Dans cet exemple, Clob1Loc pointe sur la valeur Clob1 entière et toute
la chaîne est attribuée à Char2Var.
Bien sûr, on ne peut toujours pas attribuer une valeur dépassant 64 Ko à une variable
RPG, mais on peut utiliser une code pour accéder à une partie d’une valeur CLOB.
En I, par exemple, une instruction SQL Set extrait la longueur de la valeur de
colonne Clob1 et la place dans la variable hôte Clob1Len. En J, les variables
hôtes sont calculées pour la position de départ et la longueur d’une sous-chaîne.
On peut calculer les valeurs appropriées pour une application donnée : il faut
simplement que la position de départ soit supérieure à zéro et qu’elle ne dépasse
pas la longueur de la valeur de colonne.
De plus, la longueur de la sous-chaîne ne doit pas dépasser la taille de la variable
hôte (Char3Var, par exemple). En K, une fonction SQL SubStr utilise le locator,
la position de départ et la longueur, pour extraire une partie de la valeur de
colonne Clob1 et la placer dans la variable hôte Char3Var. Le code tiré de cet
exemple peut être placé dans une boucle, pour traiter la totalité d’une grande
valeur CLOB, une partie à la fois.
L’utilisation d’un locator mérite quelques précisions. Le locator fait référence
à une chaîne immuable. Une fois un locator extrait, aucune modification de la
base de données n’apparaît dans la chaîne référencée. Pour utiliser un locator,
il faut utiliser un contrôle de validation ; autrement dit, on ne peut pas définir
Commit(*None) quand on crée le programme. Un locator n’est valide que jusqu’à
la fin d’une transaction (par l’exécution d’une instruction Commit ou Rollback,
par exemple), ou jusqu’à ce qu’on libère explicitement le locator avec une instruction
SQL Free Locator comme celle qui apparaît en L.
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- IA de confiance : le facteur clé pour rentabiliser les projets d’entreprise
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Hôpitaux virtuels : renforcer le système de santé français grâce au numérique
- Cybercriminalité bancaire : l’IA industrialise les attaques en 2026
Articles les + lus
Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
À la une de la chaîne Tech
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
