Création et modification des métadonnées du serveur
Remonter à Utilisation des composants dbExpress - Index
La majorité des commandes ne renvoyant pas de données se répartissent en deux catégories : celles servant à modifier les données (comme les commandes INSERT, DELETE et UPDATE) et celles servant à créer ou modifier sur le serveur des entités telles que les tables, les index et les procédures stockées.
Si vous ne voulez pas utiliser de commandes SQL explicites pour l'édition, vous pouvez lier votre ensemble de données unidirectionnel à un ensemble de données client lier votre ensemble de données unidirectionnel à un ensemble de données client et laisser celui-ci gérer toute la génération des commandes SQL s'appliquant à l'édition. En fait, c'est l'approche recommandée car les contrôles orientés données sont conçus pour opérer les modifications via un ensemble de données client tel que TClientDataSet.
Cependant, le seul moyen dont dispose votre application pour créer ou modifier les métadonnées sur le serveur, est d'envoyer une commande. Tous les pilotes de bases de données ne supportent pas la même syntaxe SQL. Il n'est pas du ressort de ce document de décrire la syntaxe SQL supportée par chaque type de base de données ni les différences existant entre ces types. Pour avoir des informations complètes et récentes sur l'implémentation SQL d'un système de base de données particulier, reportez-vous à la documentation livrée avec ce système.
En général, utilisez l'instruction CREATE TABLE pour créer des tables dans une base de données et CREATE INDEX pour créer de nouveaux index pour ces tables. Lorsqu'elles sont supportées, utilisez les instructions CREATE qui ajoutent les divers objets de métadonnées, comme CREATE DOMAIN, CREATE VIEW, CREATE SCHEMA et CREATE PROCEDURE.
Pour chaque instruction CREATE, il existe une instruction DROP correspondante qui efface l'objet de métadonnées. Ces instructions comprennent DROP TABLE, DROP VIEW, DROP DOMAIN, DROP SCHEMA et DROP PROCEDURE.
Pour modifier la structure d'une table, utilisez une instruction ALTER TABLE. ALTER TABLE a des clauses ADD et DROP permettant de créer de nouveaux éléments dans la table et de les supprimer. Par exemple, utilisez la clause ADD COLUMN pour ajouter à la table une nouvelle colonne, et DROP CONSTRAINT pour supprimer une contrainte préalablement établie pour la table.
Par exemple, l'instruction suivante crée une procédure stockée appelée GET_EMP_PROJ sur une base de données InterBase :
Le code suivant utilise un TSQLDataSet pour créer cette procédure stockée. Remarquez l'utilisation de la propriété ParamCheck pour empêcher l'ensemble de données de confondre les paramètres de la définition de la procédure stockée (:EMP_NO et :PROJ_ID) avec un paramètre de la requête créant la procédure stockée.
CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT) RETURNS (PROJ_ID CHAR(5)) AS BEGIN FOR SELECT PROJ_ID FROM EMPLOYEE_PROJECT WHERE EMP_NO = :EMP_NO INTO :PROJ_ID DO SUSPEND; END
with SQLDataSet1 do begin ParamCheck := False; CommandType := ctQuery; CommandText := 'CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT) ' + 'RETURNS (PROJ_ID CHAR(5)) AS ' + 'BEGIN ' + 'FOR SELECT PROJ_ID FROM EMPLOYEE_PROJECT ' + 'WHERE EMP_NO = :EMP_NO ' + 'INTO :PROJ_ID ' + 'DO SUSPEND; ' + END'; ExecSQL; end;
SQLDataSet1->ParamCheck = false; SQLDataSet1->CommandType = ctQuery; SQLDataSet1->CommandText = "CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT) RETURNS (PROJ_ID CHAR(5)) AS BEGIN FOR SELECT PROJ_ID FROM EMPLOYEE_PROJECT WHERE EMP_NO = :EMP_NO INTO :PROJ_ID DO SUSPEND; END"; SQLDataSet1->ExecSQL();