Créer une requête personnalisée
Quand l'assistant CRUD ne convient pas — analyses, rapports, jointures sur plusieurs tables, appels de procédures stockées, tout ce qui ne correspond pas à une seule table — la requête s'écrit à la main dans la vue Requêtes.
Cette page détaille le formulaire de l'éditeur, champ par champ.
Accès
Liberty Next → Construire → Connecteurs → choix du connecteur → barre de modes : Requêtes → + Ajouter une requête.
La page demande un nom, crée une requête vide et ouvre son éditeur.
Le formulaire de l'éditeur
Champ par champ
name
Non modifiable dans l'éditeur. Le nom est fixé à la création et sert de clé de permission à la requête — sql:<connecteur>:<nom>. Il se change avec le bouton Renommer en haut de l'éditeur : toutes les références (écrans, menus, dictionnaire…) sont mises à jour en une fois ; l'opération est refusée tant que des modifications locales ne sont pas enregistrées.
Règles de nommage :
| Règle | Raison |
|---|---|
| Lettres, chiffres, tirets bas. | Le nom sert à la fois de clé TOML, de segment d'URL et de permission. |
| Commence par une lettre ou un tiret bas. | Idem. |
Conventions de nommage qui tiennent dans la durée :
| Motif | Exemple |
|---|---|
<entité>_<action> | customer_balance, invoice_send |
<verbe>_<nom> | get_top_clients, mark_paid |
report_<sujet> | report_monthly_revenue, report_overdue_invoices |
writable
Switch.
| État | Instructions acceptées |
|---|---|
| Désactivé (défaut) | SELECT, y compris avec des CTE. |
| Activé | INSERT / UPDATE / DELETE / CALL / MERGE / DDL — toute instruction qui modifie la base. |
Une requête de lecture le laisse désactivé : toute instruction autre qu'un SELECT est alors refusée. L'assistant CRUD l'active déjà pour _put / _post / _delete ; sur une requête écrite à la main, il s'active au besoin.
sql
L'éditeur SQL accepte une instruction unique (cas courant) ou une variante par base de données — voir Variantes SQL par dialecte.
Ce que propose l'éditeur :
| Fonction | Rôle |
|---|---|
| Coloration syntaxique | Mots-clés colorés. |
| Autocomplétion | Les tables après FROM / JOIN / INTO / UPDATE, les colonnes après <table>., lues dans le pool du connecteur. Ctrl+Espace ouvre la liste. |
| Token | Insère une valeur renseignée par le serveur à l'exécution : {{LOGIN}}, {{SYSDATE}}, {{SYSTIME}}, {{SYSTIMESTAMP}}, {{JDEDATE}}, {{JDETIME}}, {{PID}}, {{JOBN}} — voir Liaison des paramètres. |
| Pool schemas | Insère un jeton de schéma du pool, pour que le même SQL s'exécute sur le schéma d'un autre environnement. |
Paramètres :nom | Tout :identifiant du SQL est un paramètre lié — à déclarer dans le bloc params ci-dessous. |
Quelques règles liées à la façon dont le moteur lie les paramètres :
- Les valeurs passent par des paramètres
:nom, jamais par concaténation dans le texte SQL. Le moteur les lie par le pilote de la base : le motif LIKE s'écrit'%' || :search || '%'. - Le suffixe
_ORIGINALest réservé : l'enregistrement du dialogue l'utilise pour la clause WHERE d'un UPDATE (voir Créer depuis une table de la base). - Une seule instruction par requête. Pour enchaîner plusieurs instructions, appeler une procédure stockée (
CALL) ou répartir le travail sur plusieurs requêtes.
params
La liste des paramètres déclarés — une ligne par :nom du SQL :
| Champ | Rôle |
|---|---|
name | Le nom du paramètre, sans les deux-points. Comparé sans tenir compte de la casse. |
label | Le libellé affiché au-dessus du champ de saisie. À défaut, name. |
default | La valeur proposée. Vide : l'appelant peut l'omettre, et le moteur lie un NULL. |
Ces lignes ne modifient pas le SQL : elles indiquent aux écrans et à l'assistant IA comment présenter une saisie pour chaque paramètre. Une requête sans paramètre s'en passe ; le moteur accepte d'ailleurs des paramètres non déclarés (un dialogue peut lier n'importe quel :nom_de_colonne).
Pour lier des valeurs venant d'ailleurs (clic sur une ligne, filtre parent, action enchaînée), voir Liaison des paramètres.
label (Advanced)
Nom court affiché dans les listes déroulantes — éditeur d'écran, choix de la cible d'un menu, éditeur d'actions. À défaut, le nom de la requête.
description (Advanced)
Texte plus long, affiché dans la liste Tables sous le nom de la table, et en infobulle dans le choix de la requête de lecture de l'éditeur d'écran.
Boutons de l'éditeur
| Bouton | Rôle | Remarques |
|---|---|---|
| ← Retour | Revient à la liste Requêtes, sans enregistrer. | Les modifications restent en attente — Enregistrer dans la barre du haut les écrit. |
| Find usages | Indique où la requête est utilisée (écrans, graphiques, tableaux de bord, dictionnaire…). | |
| ✎ Renommer | Renomme la requête dans tous les fichiers. | Refusé si des modifications locales ne sont pas enregistrées ; met à jour chaque référence. |
| Changer le type | Déplace la requête vers Tables, Séquences ou Lookups. | Voir les quatre types de requêtes. |
| Déplacer | Déplace la requête vers un autre connecteur SQL et réécrit les références. | |
| ⎘ Cloner | Copie la requête sous un nouveau nom. | Nom proposé : <nom>_copy. Voir Cloner une requête ou un connecteur. |
| 🗑 Supprimer | Retire la requête du connecteur. | Après confirmation. |
Enregistrement et rechargement
Enregistrer, en haut de la page Connecteurs, écrit le fichier du connecteur et recharge la configuration à chaud. La nouvelle requête répond aussitôt sur /api/sql/<connecteur>/<nom> (paramètres en query-string pour un GET, en corps JSON pour un POST sur une requête d'écriture).
Vérifier la requête
Le connecteur SQL n'a pas d'onglet de test dédié ; trois moyens existent :
| Moyen | Usage |
|---|---|
| L'utiliser depuis un écran. | Quand l'écran est de toute façon l'étape suivante. |
| Appeler directement l'API REST. | Pour un contrôle rapide — GET /api/sql/<connecteur>/<requête>?from_date=2026-01-01&to_date=2026-01-31. |
| Interroger l'assistant IA. | « Montre-moi le résultat de monthly_revenue pour le mois dernier » — si le connecteur est ouvert à l'assistant, celui-ci exécute la requête de lecture et renvoie les lignes. |
L'API REST est le moyen le plus rapide pour le diagnostic : les messages d'erreur reviennent tels quels et les paramètres passent dans l'URL.
Requête manuelle ou assistant CRUD
| Assistant CRUD | Éditeur de requête |
|---|---|
| La table existe dans la base et les quatre requêtes standard suffisent. | La requête joint plusieurs tables. |
Le câblage :NOM_ORIGINAL de l'UPDATE doit rester homogène. | La requête est un agrégat GROUP BY. |
Un _delete sur la clé primaire est attendu. | La requête renvoie une colonne calculée absente de la table. |
| La requête appelle une procédure stockée. | |
La requête écrit autrement qu'un simple UPDATE / INSERT / DELETE (MERGE, TRUNCATE). |
Pour aller plus loin
- Cloner une requête ou un connecteur — partir d'une requête existante.
- Liaison des paramètres — libellés, valeurs par défaut et sources des paramètres
:nom. - Variantes SQL par dialecte — une même requête avec un SQL différent sous Postgres et sous Oracle.