Service SQL IBM i (AS/400) · Fonction scalaire
QSYS2.DELIMIT_NAME
Délimiter un nom SQL
Fonction scalaire qui délimite un nom du catalogue Db2 for i lorsque c'est nécessaire, pour l'utiliser sans erreur dans une instruction SQL construite dynamiquement.
À quoi ça sert
La fonction scalaire QSYS2.DELIMIT_NAME reçoit un nom (INNAME) et le renvoie délimité seulement quand il en a besoin, par exemple s'il contient des minuscules, des espaces ou des caractères spéciaux. Un nom simple reste inchangé.
On l'emploie quand on construit du SQL dynamique à partir de noms lus dans le catalogue (SYSTABLES, SYSCOLUMNS…) : sans délimitation, un nom atypique fait échouer l'instruction générée. Elle est utile dans les scripts qui génèrent des DROP, des CREATE ou des requêtes pour de nombreuses tables.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT QSYS2.DELIMIT_NAME(TABLE_NAME) FROM QSYS2.SYSTABLES
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| 00001 |
|---|
| DERN |
| FICHIER_DES_COURSES |
| KLEBS |
| MOINO |
| OIZO |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Délimiter les noms du catalogue Db2 for i, au besoin.
-- Description: Delimit DB2 for i catalog names, as needed
SELECT QSYS2.DELIMIT_NAME(TABLE_NAME) FROM QSYS2.SYSTABLES;
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
INNAME |
VARCHAR(128) | obligatoire | Nom à délimiter |