Up ! Object Management System - Moniteur transactionnel

Ce programme exécute des ordres Sql simultanément pour Db2, My Sql, Oracle, PostgreSQL et Sql Server de Microsoft.

Les transactions sont synchronisées par le moniteur transactionnel d'Up ! Object Management System.

Le fichier source est ${UPS_HOME}/upsqry/demo/${UPS_LANGUAGE}/xadtc.upl.

Cet exemple utilise les instructions de l'extension d'Up ! 5GL pour Up ! Query. Les objets sémantiques sont déclarés statiquement.

Pour analyser le fichier source, UpsQry.upi doit être déclaré parmi les modules importés dans le fichier ${UPS_HOME}/ini/${UPS_USER}/upsp5l.ini.

Pour exécuter, les scripts :

Il faut également ne pas oublier de démarrer le service Distributed Transaction Coordinator sur Windows.

Mode compilé

Commande de compilation

upscmp Source=xadtc.upl

Commande d'exécution

xadtc ConnexionDb2=scott/tiger ConnexionMySql=scott/tiger@localhost/MySql ConnexionOracle=scott/tiger ConnexionPostgreSQL=scott/tiger@localhost/scott ConnexionSqlServer=scott/tiger@SQLEXPRESS/scott

Mode interprété

upssng Source=xadtc.upl ConnexionDb2=scott/tiger ConnexionMySql=scott/tiger@localhost/MySql ConnexionOracle=scott/tiger ConnexionPostgreSQL=scott/tiger@localhost/scott ConnexionSqlServer=scott/tiger@SQLEXPRESS/scott

Fichier source

Source Composant "Exemple d'emploi de Xa et Ms DTC" Version 4.0.0;

ImporterModule
/************/
ConnexionSql
/**********/
Procedure SupprimerEmployes(MaConnexionSql : Nul Ou IConnexionSql)
/****************************************************************/
Debut OrdreSql MonOrdreSql ConnexionSql MaConnexionSql MaConnexionSql.Valider();
Fin Procedure

Procedure AjouterEmployes(MaConnexionSql : Nul Ou IConnexionSql, NomEmploye : Nul Ou Caractere, DateEmbauche : Nul Ou Date, /*************************************************************************************************************************/
Debut
OrdreSql MonOrdreSql ConnexionSql MaConnexionSql Fin Procedure

Procedure ListerEmployes(MaConnexionSql : Nul Ou IConnexionSql)
/*************************************************************/
Debut
Ecran.Ecrire("Connexion "+Decoder(MaConnexionSql.FormatDeLaBaseDeDonnees, Ecran.Ecrire("==================================");
RequeteSql MaRequeteSql2 ConnexionSql MaConnexionSql Fin RequeteSql
Fin Procedure

Principal
/*******/
Debut
/* Suppression des employes. */
SupprimerEmployes(IConnexionSql(MaConnexionDb2));
SupprimerEmployes(IConnexionSql(MaConnexionMySql));
SupprimerEmployes(IConnexionSql(MaConnexionOracle));
SupprimerEmployes(IConnexionSql(MaConnexionPostgreSQL));
SupprimerEmployes(IConnexionSql(MaConnexionSqlServer));

/* Modifications annulees. */
AjouterEmployes(IConnexionSql(MaConnexionDb2), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionMySql), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionOracle), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionPostgreSQL), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionSqlServer), "youpi4", DateSysteme(), 9101, 1101.00);
TachePrincipale.TransactionCourante.Invalider();
ListerEmployes(IConnexionSql(MaConnexionDb2));
ListerEmployes(IConnexionSql(MaConnexionMySql));
ListerEmployes(IConnexionSql(MaConnexionOracle));
ListerEmployes(IConnexionSql(MaConnexionPostgreSQL));

ListerEmployes(IConnexionSql(MaConnexionSqlServer));
Ecran.Ecrire(");

/* Modifications validees. */
AjouterEmployes(IConnexionSql(MaConnexionDb2), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionMySql), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionOracle), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionPostgreSQL), "youpi4", DateSysteme(), 9101, 1101.00);
AjouterEmployes(IConnexionSql(MaConnexionSqlServer), "youpi4", DateSysteme(), 9101, 1101.00);
TachePrincipale.TransactionCourante.Valider();
ListerEmployes(IConnexionSql(MaConnexionDb2));
ListerEmployes(IConnexionSql(MaConnexionMySql));
ListerEmployes(IConnexionSql(MaConnexionOracle));
ListerEmployes(IConnexionSql(MaConnexionPostgreSQL));
ListerEmployes(IConnexionSql(MaConnexionSqlServer));
Ecran.Ecrire(");

/* Suppression des employes. */ SupprimerEmployes(IConnexionSql(MaConnexionDb2));
SupprimerEmployes(IConnexionSql(MaConnexionMySql));
SupprimerEmployes(IConnexionSql(MaConnexionOracle));
SupprimerEmployes(IConnexionSql(MaConnexionPostgreSQL));
SupprimerEmployes(IConnexionSql(MaConnexionSqlServer));
Fin Principal

Résultat de l'exécution

Connexion Db2 ================================== Connexion My Sql ================================== Connexion Oracle ================================== Connexion PostgreSQL ================================== Connexion SqlServer ================================== Connexion Db2 ================================== youpi4 09/02/2007 00:00:00 9,101 1,101.0000 Connexion My Sql ================================== youpi4 09/02/2007 00:00:00 9,101 1,101.0000 Connexion Oracle ================================== youpi4 09/02/2007 00:00:00 9,101 1,101.0000 Connexion PostgreSQL ================================== youpi4 09/02/2007 00:00:00 9,101 1,101.0000 Connexion SqlServer ================================== youpi4 09/02/2007 00:00:00 9,101 1,101.0000