Altova MapForce 2025 Professional Edition

Utiliser des procédures stockées pour générer des clés

Accueil Préc Haut Suivant

Cet exemple vous montre comment insérer des clés (ID) générées par une procédure stockée dans une autre table, avec l'aide des relations locales.

 

Créons tout d'abord la procédure stockée de démonstration dans la base de données "AdventureWorks". Pour ce faire, exécuter le script ci-dessous par rapport à la base de données. Vous pouvez ce faire à partir d'une fenêtre de requête de Microsoft SQL Server Management Studio, ou directement depuis l'onglet Requête BD de MapForce, voir Parcourir et interroger des bases de données. Dans tous les cas, s'assurer que votre compte d'utilisateur de base de données a la permission de créer des procédures stockées.

 

CREATE PROCEDURE Production.uspAddProductModelEx
 @ModelName nvarchar(50)

 ,@Inst xml

 ,@ProductModelID int OUTPUT
AS

BEGIN
INSERT INTO [Production].[ProductModel]
          ([Name]
          ,[Instructions]
          ,[rowguid]
          ,[ModifiedDate])
    VALUES
          (@ModelName
          ,@Inst
          ,NEWID()
          ,GETDATE())
  SELECT @ProductModelID = SCOPE_IDENTITY()
END

 

La procédure stockée ci-dessus prend deux paramètres (@ModelName, @Inst) en tant qu'entrée et effectue une opération INSERT dans la table ProductModel. Elle retourne ensuite le @ProductModelID généré en tant que paramètre de sortie. L'exigence est d'insérer le @ProductModelID retourné par la procédure stockée dans la table ProductModelIllustration.

 

Les étapes suivantes vous montrent comment créer un mappage qui satisfait aux exigences ci-dessus.

 

1.Se connecter à la base de données "AdventureWorks" depuis MapForce, comme décrit dans la section Ajouter des procédures stockées dans le mappage. Veuillez vous assurer que votre compte utilisateur de base de données détienne la permission de consulter et d'exécuter des procédures stockées.

2.Lorsque vous êtes invité à choisir des objets de base de données, choisir la table ProductModelIllustration et la procédure stockée uspAddProductModelEx.

mf_sp_26

3.Cliquer sur la touche Afficher menu contextuel mf_ic_storedproc_menu située à côté de la procédure stockée et choisir Afficher nœuds en tant que cible. La procédure stockée apparaît maintenant en tant que composant de cible dans le mappage, et le côté gauche recense les paramètres d'entrée.

mf_sp_27

4.En option, si vous souhaitez exécuter la procédure stockée dans une transaction, cliquer à nouveau sur la touche Afficher menu contextuel mf_ic_storedproc_menu, choisir Paramètres de procedure, et cocher la case Utiliser des transactions. Le fait de définir la transaction pour la procédure stockée permet d'assurer que l'extraction de la clé et l'insertion de l'enregistrement se produise pendant la même transaction.

5.Cliquer avec la touche de droite sur la barre de titre du composant de base de données et choisir Ajouter/Supprimer/Éditer objets de base de données depuis le menu contextuel.

6.Cliquer sur Ajouter/Éditer des relations, puis cliquer sur Ajouter relation. Définir les relations comme indiqué ci-dessous.

mf_sp_28

7.Cliquer sur OK pour fermer le dialogue. Veuillez noter que la table ProductModelIllustration apparaît maintenant en tant qu'enfant de la procédure stockée. Le paramètre de sortie de la procédure stockée (@ProductModelID) est affiché en tant qu'un indicateur qu'il sera utilisé dans la relation locale, mais il n'a pas de connecteurs d'entrée ou de sortie.

mf_sp_29

8.Dans cet exemple, le paramètre @Inst est de type XML. Cliquer avec la touche de droite sur le paramètre @Inst dans le composant et choisir Attribuer Schéma XML au champ depuis le menu contextuel. Ensuite, choisir le schéma Production.ManuInstructionsSchemaCollection depuis la base de données. Lorsque vous serez invité à choisir un élément racine, laisser la valeur par défaut telle quelle et cliquer sur OK. Pour plus d'informations concernant le mappage de données vers des champs XML de base de données, voir Mapper des données XML de / vers des champs de base de données.

mf_sp_30

9.Ajouter les composants de source qui fournissent les données à insérer dans la base de données. Dans cet exemple, les données de source sont fournies par des constantes ; néanmoins, tout autre composant de source pris en charge par MapForce pourrait agir en tant qu'entrée. Pour plus d'informations concernant les constantes, voir Ajouter une constante au mappage.

mf_sp_31

Puisque ce mappage met à jour une base de données, vous ne pouvez pas consulter sa sortie directement comme c'est le cas pour d'autres mappages. Au lieu, cliquer sur la touche Sortie pour afficher le pseudo-SQL contenant des indices concernant la manière dont la base de données sera modifiée. Si vous avez activé des transactions, celles-ci se produiront selon les indications par les commentaires.

mf_sp_32

Le pseudo-SQL afficher dans le volet Sortie ne montre pas les commandes de transaction réelles, il ne montre que des indices (comme des commentaires). Les commandes SQL réelles sont néanmoins envoyées à l'API de base de données sous-jacente.

 

Pour exécuter le mappage par rapport à la base de données, suivre une des deux étapes :

 

Dans le menu Sortie, cliquer sur Exécuter Script SQL.

Cliquer sur la touche de la barre d'outils Exécuter Script SQL mf_ic_run-sql.

© 2018-2024 Altova GmbH