DbOutJoin (Translator)
De Wiki1000
Version du 1 mars 2019 à 17:33 par Syfre (discuter | contributions)
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.
Exemple :
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)