Noms d'objets (FireDAC)
Remonter à Utilisation des métadonnées (FireDAC)
Informations générales
Les propriétés suivantes spécifient le nom des objets de base de données :
- TFDStoredProc : CatalogName, SchemaName, PackageName et StoredProcName ;
- TFDTable : CatalogName, SchemaName et TableName ;
- TFDBottomUpdateOptions : UpdateTableName ;
- TFDUpdateOptions : GeneratorName ;
- TFDAutoIncField : GeneratorName ;
- et ainsi de suite.
Un nom peut être spécifié :
- Sans guillemets et FireDAC normalise le nom ;
- Entre guillemets et FireDAC l'utilise tel quel.
Par exemple, sous Firebird avec dialecte SQL 3 :
DDL | Fonctionnera | Echouera |
---|---|---|
CREATE PROCEDURE Test | FDStoredProc1.StoredProcName := 'test';
FDStoredProc1.StoredProcName := 'TeSt'; FDStoredProc1.StoredProcName := '"TEST"'; |
FDStoredProc1.StoredProcName := '"test"'; |
CREATE PROCEDURE "Test" | FDStoredProc1.StoredProcName := '"Test"'; | FDStoredProc1.StoredProcName := 'test';
FDStoredProc1.StoredProcName := 'TeSt'; FDStoredProc1.StoredProcName := 'Test'; FDStoredProc1.StoredProcName := '"TEST"'; |
CREATE PROCEDURE "Main Proc" | FDStoredProc1.StoredProcName := '"Main Proc"'; | FDStoredProc1.StoredProcName := 'main proc';
FDStoredProc1.StoredProcName := 'Main Proc'; |
Noms d'objets délimités
FireDAC supporte les noms d'objets délimités, notamment les caractères entre guillemets des différents SGBD. Pour écrire un nom délimité dans une instruction SQL indépendamment du SGBD, utilisez la syntaxe {id <nom>}. Par exemple :
SELECT * FROM {id Order Details}
Pour forcer TFDTable à mettre les noms de champs entre guillemets, définissez la propriété FormatOptions.QuoteIdentifiers sur True.
Noms d'objets complets
FireDAC supporte les noms d'objets complets, c'est-à-dire avec le nom du catalogue et/ou du schéma.
Quand vous utilisez des éditeurs de conception comme la zone de liste déroulante TFDStoredProc.StoredProcName, Query Builder, etc., ils renvoient le nom complet des objets. Pour que le nom du catalogue et/ou schéma n'apparaisse pas dans le nom complet des objets, utilisez les paramètres de définition de connexion MetaDefCatalog et MetaDefSchema. Par exemple :
[MSSQL_Demo] DriverID=MSSQL ... MetaDefCatalog=Northwind MetaDefSchema=dbo
Quand un nom d'objet abrégé est spécifié pour StoredProcName, TableName, etc, il est développé en nom complet à l'aide du nom du catalogue et/ou schéma en cours. Pour que le nom du catalogue et/ou schéma en cours ne soit pas utilisé, utilisez les paramètres de définition de connexion MetaCurCatalog et MetaCurSchema. Par exemple :
[MSSQL_Demo] DriverID=MSSQL ... MetaCurCatalog=* MetaCurSchema=*