Aller au contenu

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ètreTypePar défautSignification
INNAME VARCHAR(128) obligatoire Nom à délimiter