Translateurs SQL (tech)

De Wiki1000
(Différences entre les versions)
(Méthodes)
Ligne 15 : Ligne 15 :
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
|DBOUTVARIANT
+
|[[dbOutVariant (Translator)|DBOUTVARIANT]]
 
|<source lang='delphi'>function DbOutVariant(const iValue: Variant):string;</source>
 
|<source lang='delphi'>function DbOutVariant(const iValue: Variant):string;</source>
 
|Traduit une valeur iValue en fonction de son type.
 
|Traduit une valeur iValue en fonction de son type.
 
|-
 
|-
|DBOUTROWCOUNT
+
|[[dbOutRowCount (Translator)|DBOUTROWCOUNT]]
 
|<source lang='delphi'>function DbOutRowCount(iCount:Integer):string;</source>
 
|<source lang='delphi'>function DbOutRowCount(iCount:Integer):string;</source>
 
|Traduit l'instruction SQL qui force le moteur de données à arrêter l'exécution de la requête après avoir renvoyé le nombre de lignes spécifié.
 
|Traduit l'instruction SQL qui force le moteur de données à arrêter l'exécution de la requête après avoir renvoyé le nombre de lignes spécifié.
 
|-
 
|-
|DBOUTSTR
+
|[[dbOutStr (Translator)|DBOUTSTR]]
 
|<source lang='delphi'>function DbOutStr(const iString: string):string;</source>
 
|<source lang='delphi'>function DbOutStr(const iString: string):string;</source>
 
|Traduit une valeur de type string.
 
|Traduit une valeur de type string.
 
|-
 
|-
|DBOUTOID
+
|[[dboutOID (Translator)|DBOUTOID]]
 
|<source lang='delphi'>function DbOutOid(const iOID: string):string;</source>
 
|<source lang='delphi'>function DbOutOid(const iOID: string):string;</source>
 
|Traduit un oid.
 
|Traduit un oid.
 
|-
 
|-
|DBOUTDATEPART
+
|[[dbOutDatePart (Translator)|DBOUTDATEPART]]
 
|<source lang='delphi'>function DbOutDatePart(
 
|<source lang='delphi'>function DbOutDatePart(
 
                     iPart: TPartOfDate;
 
                     iPart: TPartOfDate;
Ligne 51 : Ligne 51 :
 
iColumn est une expression correspondant à une valeur de type date.
 
iColumn est une expression correspondant à une valeur de type date.
 
|-
 
|-
|DBOUTSUBSTR
+
|[[dbOutSubStr (Translator)|DBOUTSUBSTR]]
 
|<source lang='delphi'>function DbOutStr(
 
|<source lang='delphi'>function DbOutStr(
 
                     const iColumn: string;  
 
                     const iColumn: string;  
Ligne 59 : Ligne 59 :
 
iLen : Entier précisant la longueur de la sous-chaîne (le nombre de caractères ou d'octets à renvoyer).
 
iLen : Entier précisant la longueur de la sous-chaîne (le nombre de caractères ou d'octets à renvoyer).
 
|-
 
|-
|DBOUTDAYSBETWEEN
+
|[[dbOutDaysBetween (Translator)|DBOUTDAYSBETWEEN]]
 
|<source lang='delphi'>function DbOutDaysBetween(iBeginDate,iEndDate:Variant) :string;</source>
 
|<source lang='delphi'>function DbOutDaysBetween(iBeginDate,iEndDate:Variant) :string;</source>
 
|Traduit la fonction DATEDIFF qui renvoie le nombre de jours traversées entre deux dates données.
 
|Traduit la fonction DATEDIFF qui renvoie le nombre de jours traversées entre deux dates données.
 
|-
 
|-
|DBOUTISNULL
+
|[[dbOutIsNull (Translator)|DBOUTISNULL]]
 
|<source lang='delphi'>function DbOutIsNull(iExpr,iResultat : string) : string;</source>
 
|<source lang='delphi'>function DbOutIsNull(iExpr,iResultat : string) : string;</source>
 
|Traduit la fonction ISNULL qui remplace NULL par la valeur de remplacement spécifiée.
 
|Traduit la fonction ISNULL qui remplace NULL par la valeur de remplacement spécifiée.
 
|-
 
|-
|DBOUTWHERESTRING
+
|[[dbOutWhereString (Translator)|DBOUTWHERESTRING]]
 
|<source lang='delphi'>function DbOutWhereString(
 
|<source lang='delphi'>function DbOutWhereString(
 
                     const iFieldName: string;
 
                     const iFieldName: string;
Ligne 76 : Ligne 76 :
 
{{tip|N'utilisez pas les comparaisons avec la chaîne vide dans les requêtes SQL. Le framework n'enregistre pas de chaînes vides dans la basse de données mais la valeur NULL.}}
 
{{tip|N'utilisez pas les comparaisons avec la chaîne vide dans les requêtes SQL. Le framework n'enregistre pas de chaînes vides dans la basse de données mais la valeur NULL.}}
 
|-
 
|-
|DBOUTJOIN
+
|[[dbOutJoin (Translator)|DBOUTJOIN]]
 
|<source lang='delphi'>function DbOutJoin(
 
|<source lang='delphi'>function DbOutJoin(
 
                     const iTableJoint: string;
 
                     const iTableJoint: string;
Ligne 99 : Ligne 99 :
 
iWhereForJoin - renvoie une condition SQL à mettre dans la clause WHERE.
 
iWhereForJoin - renvoie une condition SQL à mettre dans la clause WHERE.
 
|-
 
|-
|DBOUTLEFTOUTERJOIN
+
|[[dbOutLeftOuterJoin (Translator)|DBOUTLEFTOUTERJOIN]]
 
|<source lang='delphi'>function DbOutLeftOuterJoin(
 
|<source lang='delphi'>function DbOutLeftOuterJoin(
 
                     const iTableJoint: string;
 
                     const iTableJoint: string;
Ligne 110 : Ligne 110 :
 
|Traduit la syntaxe d'une jointure externe. Les paramètres sont identiques à ceux de la fonction DBOUTJOIN.
 
|Traduit la syntaxe d'une jointure externe. Les paramètres sont identiques à ceux de la fonction DBOUTJOIN.
 
|-
 
|-
|DBOUTTABLENAME
+
|[[dbOutTableName (Translator)|DBOUTTABLENAME]]
 
|<source lang='delphi'>function DbOutTableName(
 
|<source lang='delphi'>function DbOutTableName(
 
                     const iTableName: string;
 
                     const iTableName: string;
Ligne 119 : Ligne 119 :
 
iAliasName - Nom du alias.
 
iAliasName - Nom du alias.
 
iOptJoint - Options de verrouillage. Voir l'options de verrouillage du DBOUTJOIN.
 
iOptJoint - Options de verrouillage. Voir l'options de verrouillage du DBOUTJOIN.
 +
|-
 +
|[[dbOutWhereNull (Translator)|dbOutWhereNull]]
 +
|
 +
|Terme null
 +
|-
 +
|[[dbOutWhereNotNull (Translator)|dbOutWhereNotNull]]
 +
|
 +
|Terme not null
 
|}
 
|}
  

Version du 1 mars 2019 à 17:12

Sommaire

Introduction

Le traducteur de code est un objet technique permetant d’écrire du code SQL indépendant du type de serveur de base de données utilisé.

Vous pouvez accéder aux fonctions du traducteur par l'attribut "Translator" d'un curseur ou d'une requête.

Propriétés

DBOUTOPCONCATSTRINGS Renvoie l'opérateur de concaténation de chaîne.

Méthodes

DBOUTVARIANT
function DbOutVariant(const iValue: Variant):string;
Traduit une valeur iValue en fonction de son type.
DBOUTROWCOUNT
function DbOutRowCount(iCount:Integer):string;
Traduit l'instruction SQL qui force le moteur de données à arrêter l'exécution de la requête après avoir renvoyé le nombre de lignes spécifié.
DBOUTSTR
function DbOutStr(const iString: string):string;
Traduit une valeur de type string.
DBOUTOID
function DbOutOid(const iOID: string):string;
Traduit un oid.
DBOUTDATEPART
function DbOutDatePart(
                     iPart: TPartOfDate;
                     const iColumn: string):string;
Traduit la fonction DATEPART qui renvoie un entier représentant l'élément de date précisé dans la date spécifiée.

iPart peut avoir les valeurs suivantes :

  • dpyear
  • dpquart
  • dpmonth
  • dpdayofyear
  • dpday
  • dpweek
  • dpweekday
  • dphour
  • dpminute
  • dpsecond
  • dpmillisecond

iColumn est une expression correspondant à une valeur de type date.

DBOUTSUBSTR
function DbOutStr(
                     const iColumn: string; 
                     iOfs,iLen : Integer):string;
Traduit l'instruction SUBSTRING qui renvoie une partie d'une expression de type caractère, binaire, texte ou image.

iOfs : Entier précisant où la sous-chaîne commence. iLen : Entier précisant la longueur de la sous-chaîne (le nombre de caractères ou d'octets à renvoyer).

DBOUTDAYSBETWEEN
function DbOutDaysBetween(iBeginDate,iEndDate:Variant) :string;
Traduit la fonction DATEDIFF qui renvoie le nombre de jours traversées entre deux dates données.
DBOUTISNULL
function DbOutIsNull(iExpr,iResultat : string) : string;
Traduit la fonction ISNULL qui remplace NULL par la valeur de remplacement spécifiée.
DBOUTWHERESTRING
function DbOutWhereString(
                     const iFieldName: string;
                     const iOperator: string;
                     const iFieldValue: string):string;
Traduit une expression en tenant compte de la gestion des NULL du moteur de basse de données.

A utiliser avec les opérateurs de comparaison ">","<",">=","<=" ,"=".

Tip-20px.png Tip : N'utilisez pas les comparaisons avec la chaîne vide dans les requêtes SQL. Le framework n'enregistre pas de chaînes vides dans la basse de données mais la valeur NULL.
DBOUTJOIN
function DbOutJoin(
                     const iTableJoint: string;
                     const iAliasJoint: string;
                     iOptsJoint: TdbTableOption;
                     const iColumnLeft: string;
                     const iAliasRight: string;
                     const iColumnRight: string;
                     var iWhereForJoin:string):string;
Traduit une syntaxe pour une jointure simple.

iTableJoint - nom de la table jointe. iALiasJoint - nom d'alias de la table jointe. iOptJoint - Options de verrouillage de la table jointe pour MSSQL. Vous disposez des options de verrouillage suivantes :

  • dbtoNO - Aucun verrouillage.
  • dbtoNOLock – L’ordre n'émet pas de verrous partagés et n'effectue pas de verrous exclusifs. En spécifiant cette option, il est possible de lire une transaction non validée, ou d'accéder à un jeu de pages qui subissent une opération de roll back en cours de lecture. Les lectures incorrectes sont possibles. S'applique uniquement à la commande SELECT.
  • dbtoLockX - Utilise un verrou exclusif sur une table. Ce verrou empêche les autres sessions de lire ou de mettre à jour la table et est conservé jusqu'à la fin de la commande ou de la transaction.
  • dbtoHoldLock - Conserve un verrou partagé jusqu'à la fin de la transaction au lieu de libérer le verrou dès que la table, ligne ou page de données n'est plus requise. HOLDLOCK est l'équivalent de SÉRIALISABLE.

iColumnLeft - colonne de la table gauche de la jointure. iAliasRight - alias de la table du colonne right. iColumnRight - colonne de la table droite de la jointure. Le critère sur lesquels est basée la jointure est (iCumnLeft = iColumnRight). iWhereForJoin - renvoie une condition SQL à mettre dans la clause WHERE.

DBOUTLEFTOUTERJOIN
function DbOutLeftOuterJoin(
                     const iTableJoint: string;
                     const iAliasJoint: string;
                     iOptsJoint: TdbTableOption;
                     const iColumnLeft: string;
                     const iAliasRight: string;
                     const iColumnRight: string;
                     var WhereForJoin : string) : string;
Traduit la syntaxe d'une jointure externe. Les paramètres sont identiques à ceux de la fonction DBOUTJOIN.
DBOUTTABLENAME
function DbOutTableName(
                     const iTableName: string;
                     const iAliasName: string;
                     iOpts: TdbTableOption):string;
Traduit un nom de table avec options de verrouillage.

iTableName - Nom de la table. iAliasName - Nom du alias. iOptJoint - Options de verrouillage. Voir l'options de verrouillage du DBOUTJOIN.

dbOutWhereNull Terme null
dbOutWhereNotNull Terme not null

Exemples

Utilisation de dbOutVariant

cursor.SQL.Add(Format('WHERE (dateEcriture = %s)', [cursor.Translator.dbOutVariant(vdateEcriture)]));

Utilisation de dbOutTableName

cursor.SQL.Add('SELECT * FROM ' + cursor.Translator.dbOutTableName('TPIECE','Piece', dbtoNOLock));
// Sur MSSQL la fonction retourne SELECT * FROM TPIECE Piece (NOLOCK)

Utilisation de dbOutJoin

cursor.SQL.Add('SELECT * FROM ' + cursor.Translator.dbOutTableName('TPIECE','Piece', dbtoNOLock));
cursor.SQL.Add(cursor.Translator.dbOutJoin('TJOURNAL','Journal', dbtoNOLock, 'oid','Piece',oidJournal,vWhereJoin));
cursor.SQL.Add('WHERE Journal.code = "AC"');
if (vWhereJoin <> '') then cursor.SQL.ADD(' and '+ vWhereJoin);
//
// Sur MSSQL la fonction retourne : 
//
// SELECT * FROM TPIECE (NOLOCK)
// LEFT OUTER JOIN TJOURNAL Journal (NOLOCK) 
//    ON(Journal.oid = Piece.oidJournal)
// WHERE (Journal.Code = "AC") 
//
// et sur ORACLE 
//
// SELECT * FROM TPIECE Piece, TJOURNAL Journal
// WHERE (Journal.Code = "AC")
//       and (Journal.oid = Piece.oidJournal)

Utilisation de dbOutDatePart

cursor.SQL.Add(cursor.Translator.dbOutDatePart(dpYear,'dateEcriture'));
// Sur MSSQL la fonction retourne : DATEPART(year,dateEcriture)
// et sur ORACLE : to_NUMBER(to_CHAR(dateEcriture, ''YYYY''))

Utilisation de dbOutSubStr

cursor.SQL.Add(cursor.Translator.dbOutSubstr(Caption,1,5));
// Sur SQL Server la fonction retourne : SUBSTRING(Caption,1,5)
// et sur ORACLE : SUBSTR(Caption,1,5)

Utilisation de dbOutDaysBetween

cursor.SQL.Add(cursor.Translator.dbOutDaysBetween('beginDate','endDate'));
// Sur MSSQL la fonction retourne : DATEDIFF(day, beginDate, endDate)
// et sur ORACLE : ROUND(to_DATE('beginDate','DD/MM/YYYY HH24 :MI :SS')) 
//                 ROUND(to_DATE('endDate','DD/MM/YYYY HH24 :MI :SS'))

Utilisation de dbOutisNull

cursor.SQL.Add(cursor.Translator.dbOutIsNull('sum(montant)',0));
// Sur MSSQL la fonction retourne : ISNULL(sum(montant),0)
// et sur ORACLE : NVL(sum(montant),0)

Utilisation de dbOutWhereString

cursor.SQL.Add(cursor.Translator.dbOutWhereString('Caption','=',valeur));
// Sur ORACLE si le valeur est vide la fonction retourne Caption is null

Code métierDéveloppement DSM

Outils personnels