Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Ma contributions avant les vacances ...
Problématique :
Une procédure stockée permet de créer des ordres de commandes, des ordres de bourse etc ...
Chaque client a sont système de gestion (notre application !!!) interfacée avec des systèmes externes qui récupère les ordres de commande , de bourse ... pour les exécuter.
Notre procédure principale de création des ordres aurais besoin d'être customisée pou s'interfacer avec les systèmes externes de chaque client et on ne veut pas en faire une différente pour chaque client dans la mesure ou 90% du code est commun à tous.
Bon je sais pas si c'est clair ....
Solution :
Appeler des procédures spécifiques à chaque client que l'on paramètrera dans des tables
Dans la procédure principale :
Create Proc dbo.ma_proc_de_validation_des_ordres ( @param1 int, @param2 int = null ) As Begin .../... mon code .../... mon code -- Proc specifique customizable dans la table TRAIT_SPECIF select @nom_proc = name from sysobjects where id = @@procid select @trait_specif = PROC_SPECIF from TRAIT_SPECIF where PROC_STAND = @nom_proc and EMPLACEMENT = "Before Tran" If @trait_specif <> NULL Begin If Exists (select 1 from sysobjects where name=@trait_specif and type='P' and (uid=user_id() or uid=user_id("dbo")) ) Begin exec @res = @trait_specif If @res != 0 Begin goto erreur End End End begin transaction .../... mon code -- Proc specifique customizable dans la table TRAIT_SPECIF select @nom_proc = name from sysobjects where id = @@procid select @trait_specif = NULL select @trait_specif = PROC_SPECIF from TRAIT_SPECIF where PROC_STAND = @nom_proc and EMPLACEMENT = "In Tran" If @trait_specif <> NULL Begin If Exists (select 1 from sysobjects where name=@trait_specif and type='P' and (uid=user_id() or uid=user_id("dbo")) ) Begin exec @res = @trait_specif If @res != 0 Begin goto erreur End End End commit transaction
On paramètre le nom des procs spécifiques dans une nouvelle table
par exemple :
select * from TRAIT_SPECIF PROC_STAND PROC_SPECIF MW_MODULE MW_DESCRIPTION MW_EMPLACEMENT [char ] [char ] [char ] [char ] [char ] ---------------------------------------- -------------- --------- ------------------ -------------- ma_proc_de_validation_des_ordres proc_specif_client Order Modification ordre In Tran
A+++++
Hors ligne
Hors ligne
Alors là bravo !!
1000 pépites
Dernière modification par LeCiao (27-07-2010 12:36:19)
Hors ligne
pour ta contribution !
je corrige la balise code pour le coup, mais avec ici code=mssql
Hors ligne