Aller au contenu

Service SQL IBM i (AS/400) · Fonction scalaire

QSYS2.SQL_CHECK_AUTHORITY

Contrôle du droit d'accès à un objet

Fonction scalaire qui indique si l'utilisateur courant a le droit d'interroger une table ou un fichier donné, avant de lancer la requête.

À quoi ça sert

SQL_CHECK_AUTHORITY prend le nom système de la bibliothèque (SYSTEM_SCHEMA_NAME) et le nom système de l'objet (SYSTEM_OBJECT_NAME) et renvoie un indicateur : dans l'exemple d'IBM, la valeur 1 signifie que l'utilisateur peut interroger l'objet.

Elle sert à écrire des requêtes ou des procédures qui s'adaptent aux droits de l'utilisateur au lieu d'échouer sur une erreur d'autorisation, par exemple pour n'afficher que les tables accessibles dans une application.

Elle renvoie un résultat pour l'utilisateur qui exécute l'instruction : on l'emploie dans un CASE ou dans une clause WHERE.

Résultat réel sur un IBM i 7.5

Ce que nous avons exécuté :

VALUES ( CASE WHEN QSYS2.SQL_CHECK_AUTHORITY('QSYS2','SYSLIMITS') = 1 
   THEN 'I can query QSYS2/SYSLIMITS' ELSE 'No query access for me' END )

Ce que l'IBM i a renvoyé le 01/10/2026 (1 ligne au plus) :

00001
I can query QSYS2/SYSLIMITS

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

Savoir si l'utilisateur a le droit d'interroger ce fichier.

-- Description: Does this user have authority to query this file 
   VALUES ( CASE WHEN QSYS2.SQL_CHECK_AUTHORITY('QSYS2','SYSLIMITS') = 1 
   THEN 'I can query QSYS2/SYSLIMITS' ELSE 'No query access for me' END );

Bon à savoir

Les deux paramètres sont des noms système, pas des noms SQL longs : utilisez le nom de 10 caractères au plus de la bibliothèque et de l'objet.

Paramètres

ParamètreTypePar défautSignification
SYSTEM_SCHEMA_NAME VARCHAR(10) obligatoire Nom système de la bibliothèque
SYSTEM_OBJECT_NAME VARCHAR(10) obligatoire Nom système de l'objet