Altova MapForce 2024 Enterprise Edition

Les procédures stockées sont des programmes qui sont hébergés et exécutés sur un serveur de base de données. Les procédures stockées peuvent être appelées par des applications client et elles sont souvent écrites en un dialecte élargi de SQL. Certaines bases de données prennent aussi en charge des mises en place dans Java, .NET CLR, ou d'autres langages de programmation.

 

Des utilisations typiques de procédures stockées incluent l’interrogation d’une base de données et le renvoi de données au client appelant, ou la réalisation de modifications à la base de données après une validation supplémentaire des paramètres d’entrée. Les procédures stockées peuvent également réalisées d’autres actions à l’extérieur de la base de données, telle qu’envoyer des e-mails.

 

Une procédure stockée peut avoir zéro ou plusieurs paramètres d'entrée et de sortie, et peut retourner en option zéro ou plusieurs recordsets, en plus de la valeur retournée par défaut. Par conséquent, dans MapForce, vous pouvez appeler une procédure stockée de plusieurs manières :

 

Appeler une procédure stockée pour obtenir des données, comme s'il s'agissait d'un composant de source dans le mappage. Ceci s’applique pour des procédures qui ne prennent pas des paramètres d’entrée. Lorsque le mappage est exécuté, la procédure est appelée, et elle retourne certains recordset ou paramètres de sortie. Vous pouvez mapper recordset, ou les paramètres de sortie, ou les deux, vers tout autre type de données pris en charge par MapForce. Pour consulter un exemple, voir Procédures stockées en tant que source de données.

Appeler une procédure stockée comme appel function-like, avec des paramètres. Dans ce cas, vous apportez tous les paramètres d'entrée requis depuis le mappage, et vous pouvez aussi mapper le recordset retourné, ou les paramètres de sortie, ou les deux, vers une autre cible prise en charge par MapForce. Pour consulter un exemple, voir Procédures stockées avec Entrée et Sortie.

Appeler une procédure stockée comme s'il s'agissait d'un composant cible sur le mappage. Le cas d'utilisation typique est d'appeler une procédure stockée avec des paramètres afin de modifier la base de données (par exemple, insérer un enregistrement). Cette approche est convenable si vous ne nécessitez pas de sortie provenant de la procédure stockée. De même, dans cette approche, vous pouvez exécuter la procédure stockée dans le cadre d'une transaction de base de données qui peut être renversée en cas d'erreur. Pour un exemple, voir Procédures stockées dans les Composants cibles.

 

Il existe également des cas où vous devez appeler des procédures stockées ou réaliser des actions dans des tables de base de données dans un ordre spécifique (d’abord insérer, puis mettre à jour, etc.). Par exemple, si vous souhaitez passer le paramètre de sortie d'une procédure stockée dans une autre procédure stockée. Ou bien vous pouvez souhaiter combiner des données retournées par une procédure stockée avec des données provenant d'une table. Ce genre d'actions est possible avec l'aide des relations locales définies dans MapForce, même si la base de données sous-jacente n'impose pas de relations clés primaire/étrangère entre les tables. Pour voir un exemple, voir Procédures stockées et Relations locales.

 

Note :Pour illustrer comment MapForce met en place des procédures de stockage, ce chapitre utilise Microsoft SQL Server 2016 et la base de données "AdventureWorks2016". Cette dernière peut être téléchargée depuis le https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks.

 

Notes de prise en charge

Les procédures stockées peuvent être utilisées uniquement dans le moteur d’exécution BUILT-IN. La génération de code dans C++, C#, ou Java n’est pas prise en charge.

Les types définis par l'utilisateur, les types de curseur, les types de variante et de nombreux autres types de données "exotiques" spécifiques à des bases de données (comme des tableaux, géométrie, types CLR) ne sont généralement pas pris en charge en tant que types de paramètres d'entrée ou de sortie.

La surcharge de procédure et de fonction (plusieurs définitions de routines portant le même nom et des paramètres différents) n'est pas prise en charge.

Certaines valeurs par défaut de prise en charge de bases de données dans les paramètres d'entrée, cela n'est pas pris en charge actuellement. Vous ne pouvez pas omettre des paramètres d'entrée dans le mappage pour utiliser la valeur par défaut.

Les procédures stockées retournant des enregistrements multiples sont pris en charge selon la combinaison du pilote et de l'API de base de données (ODBC/ADO/ADO.NET/JDBC). Seules des procédures qui retournent le même nombre d'enregistrements avec une structure de colonne fixe sont prises en charge.

Dès que possible, utiliser la dernière version du pilote natif de base de données maintenu par le fournisseur de base de données. Éviter d'utiliser des pilote de pont, comme ODBC vers ADO Bridge, ou ODBC vers JDBC Bridge.

En option, vous pouvez activer des transactions de base de données pour les procédures stockées appelées en tant que source de données, voir Procédures stockées dans les Composants cibles. Les transactions ne sont pas prises en charge pour les procédures stockées appelées en tant que source de données (sans les paramètres d'entrée), ou celles qui sont appelées en tant qu'une fonction (avec l'entrée et la sortie).

 

La table suivante liste les notes de prises en charge spécifique à la base de données.

 

Base de données

Notes de prise en charge

Accès

Les procédures stockées dans les bases de données Microsoft Access disposent de fonctions très limitées et ne sont pas prises en charge dans MapForce.

DB2

Prise en charge dans MapForce: procédures stockées, fonctions scalaires, fonctions table.

Les valeurs de renvoi provenant des procédures de stockage de DB2 ne sont pas prises en charge parce qu'elles ne peuvent pas être lues par le biais des API de base de données utilisées dans MapForce.

Les fonctions Row-valued (RETURNS ROW) ne sont pas prises en charge.

Il est recommandé d'installer au moins « IBM_DB2 9.7 Fix Pack 3a » pour éviter un problème de pilote JDBC confirmé lors de la lecture des erreurs/avertissements après l'exécution. Cela permet aussi de régler un problème avec le fournisseur ADO qui entraîne la perte d'une ligne de résultat.

Firebird

Prise en charge dans MapForce: procédures stockées, fonctions table-valued

Informix

Prise en charge dans MapForce: procédures stockées, fonctions table-valued.

MariaDB

Prise en charge dans MapForce: procédures stockées, fonctions scalaires

MySQL

Prise en charge dans MapForce: procédures stockées, fonctions scalaires

MySQL contient une prise en charge complète pour des procédures stockées et des fonction en commençant avec la version 5.5. Si vous utilisez une version précédente, les fonctions dans MapForce sont limitées.

Oracle

Prise en charge dans MapForce: procédures stockées, fonctions scalaires, fonctions table. Cela contient des procédures stockées et des fonctions autonomes ainsi que celles définies dans un package Oracle.

Il est recommandé d'utiliser un pilote Oracle natif au lieu de Microsoft OLE DB Provider for Oracle.

Oracle a un moyen spécial de retourner les ensembles de résultat dans le client en utilisant des paramètres de sortie de type REF CURSOR. Cela est pris en charge par MapForce pour des procédures stockées, mais pas pour des fonctions. Les noms et le nombre des enregistrements sont donc toujours fixées pour des procédures stockées Oracle.

PostgreSQL

Prise en charge dans MapForce: fonctions scalaires, fonctions row-valued, fonctions table-valued.

Dans PostgreSQL, tous les paramètres de sortie définis dans une fonction décrivent les colonnes de l'ensemble de résultat. Cette information est utilisée automatiquement par MapForce - aucune détection par exécution ou entrée des enregistrements n'est nécessaire. Les paramètres de type refcurseur ne sont pas pris en charge.

Progress OpenEdge

Prise en charge dans MapForce: procédures stockées.

Serveur SQL

Prise en charge dans MapForce: procédures stockées, fonctions scalaires, fonctions table-valued.

Il est recommandé d'utiliser le dernier pilote SQL Server Native Client au lieu de Microsoft OLE DB Provider for SQL Server.

L'API d'ADO a une prise en charge limitée pour certains types de données introduits avec SQL Server 2008 (datetime2, datetimeoffset). Si vous rencontrez des problèmes de raccourcissement de données avec ces types temporels lorsque vous utilisez ADO avec le SQL Server Native Client, vous pouvez définir l'argument de string de connexion DataTypeCompatibility=80 ou utiliser ODBC.

Les SQL Server Procedures ont un paramètre de retour implicite de type int null, qui est disponible pour le mappage. Si la procédure omet une instruction RETURN, la valeur résultante est 0.

SQLite

SQLite n'utilise pas de procédures stockées.

Teradata

Prise en charge dans MapForce: procédures stockées, macros.

Fonctions scalaires, fonctions d'agrégat et fonctions de table ne sont pas prises en charge

Problème connu : Le pilote Teradata ODBC refuse de remplir les valeurs de paramètre de sortie après un appel de procédure.

© 2018-2024 Altova GmbH