IBM DB2 Universal Database (UDB) (via JDBC) - Import
Prérequis du pont
Ce pont :nécessite un accès à Internet vers https://repo.maven.apache.org/maven2/ et/ou d'autres sites d'outils permettant de télécharger des pilotes dans <TDC_HOME>/data/download/MIMB/.
Spécifications du pont
Fournisseur | IBM |
Nom de l'outil | Base de données DB2 Universelle (UDB) |
Version de l'outil | 9.7 à 11.x |
Site Web de l'outil | http://www.ibm.com/software/data/db2/ |
Méthodologie supportée | [Base de données relationnelle] Multimodèle, Data Store (Modèle de données physique, Parsage d'expressions de procédures stockées), via une API JDBC |
Profiling de données | |
Collecte incrémentale | |
Collecte multi-modèle | |
Navigation dans le référentiel distant pour sélectionner un modèle |
SPÉCIFICATIONS
Outil : Microsoft/Base de données SQL Server version 7.0 à 15.x (2019) via l'API JDBC
Consultez http://msdn.microsoft.com/fr-fr/sqlserver/aa937724.aspx
Métadonnées : [Base de données relationnelle] Multimodèle, Data Store (Modèle de données physique, Parsage d'expressions de procédures stockées)
Composant : JdbcMicrosoftSqlServer version 11.2.0
AVERTISSEMENT
Ce pont d'import requiert un accès à Internet pour télécharger les bibliothèques tierces :
- par exemple https://repo.maven.apache.org/maven2/ pour télécharger les bibliothèques tierces open source,
- et plus de sites pour d'autres logiciels tiers, comme les pilotes JDBC spécifiques pour les bases de données.
Les bibliothèques tierces téléchargées sont stockées dans $HOME/data/download/MIMB/
- Si le protocole HTTPS échoue, le pont d'import essaye ensuite avec HTTP.
- Si un proxy est utilisé pour accéder à Internet, vous devez configurer ce proxy dans l'environnement JRE (voir l'option -j dans le paramètre Divers).
- Si le pont d'import n'a pas d'accès à Internet, le répertoire $HOME/data/download/MIMB/ peut être copié depuis un autre serveur qui a accès à Internet, où la commande $HOME/bin/MIMB.sh (ou .bat) -d peut être utilisée pour télécharger en une fois toutes les bibliothèques tierces utilisées par tous les ponts.
En exécutant ce pont d'import, vous reconnaissez être responsable des conditions d'utilisation et de toute autre faille de sécurité potentielle liées au téléchargement de ces bibliothèques logicielles tierces.
VUE D'ENSEMBLE
Ce pont utilise une connexion JDBC vers un serveur de base de données IBM DB2 UDB pour extraire toutes ses métadonnées (Schémas, Tables, Colonnes, Types de données...) et parser tout SQL (Vues, Procédures stockées... ) pour produire le lignage du flux de données.
Ce pont d'import importe les métadonnées du serveur de la base de données en tant que multi-modèles avec un modèle par schéma. D'autres imports (collecte incrémentale) vont détecter les modifications dans les schémas pour importer uniquement les schémas modifiés (et réutiliser les schémas collectés non modifiés).
PRÉREQUIS
Consultez le paramètre Location (Emplacement) pour les prérequis du pilote JDBC.
Consultez la section AUTORISATIONS ci-dessous.
AUTHENTIFICATION
n/a
AUTORISATIONS
Les ponts d'import sont garantis pour être en lecture seule uniquement et n'extraire que des métadonnées. C'est pour cette raison que l'utilisateur de ce pont d'import a besoin de beaucoup moins d'autorisations que les utilisateurs traditionnels devant lire/écrire des données.
Dans le cas d'une base de données DB2 :
Le nom d'utilisateur spécifié doit avoir une autorisation CONNECT.
Ce pont d'import se connectera aux tables SYSCAT existantes dans l'environnement IBM DB2 UDB lors de l'import des métadonnées. Notez également que la JVM utilisée pour l'environnement d'application doit charger la bibliothèque appropriée, selon le type de bits (32 ou 64 bits).
Une JVM de 32 bits ne peut charger que des bibliothèques natives de 32 bits et une JVM de 64 bits ne peut charger que des bibliothèques natives DB2 de 64 bits.
http://www-01.ibm.com/support/docview.wss?uid=swg21419978
N'utilisez pas ce pont d'import pour accéder à des instances DB2 basées sur un mainframe. Utilisez plutôt le pont de base de données générique (via JDBC).
Notez également que la JVM utilisée pour l'environnement d'application doit charger la bibliothèque appropriée, selon le type de bits (32 ou 64 bits).
Une JVM de 32 bits ne peut charger que des bibliothèques natives de 32 bits et une JVM de 64 bits ne peut charger que des bibliothèques natives DB2 de 64 bits.
http://www-01.ibm.com/support/docview.wss?uid=swg21419978
FOIRE AUX QUESTIONS
Q : Au cours de l'import, je reçois l'erreur SQL suivante - "The model 'abc' import failed (Échec de l'import du modèle 'abc'). Error (Erreur) : SQL error (Erreur SQL) 'DB2 SQL Error (Erreur DB2 SQL) : SQLCODE=-551", et l'import est incomplet, que dois-je faire ?
R : Il y a un problème avec les autorisations associées au compte utilisateur utilisé pour l'import. Pour résoudre ce problème, fournissez l'accès au schéma SESSION pour le compte utilisateur et effectuez à nouveau l'import.
LIMITATIONS
Consultez les limitations générales connues à l'adresse https://metaintegration.com/Products/MIMB/Help/#!Documents/mimbknownlimitations.html
SUPPORT
Fournissez un package de dépannage avec :
- le log de débogage (configurable dans l'interface ou dans conf/conf.properties avec MIR_LOG_LEVEL=6)
- la sauvegarde des métadonnées si disponible (configurable dans le paramètre Divers avec l'option -backup même si cette option commune n'est pas implémentée pour tous les ponts pour des raisons techniques).
Paramètres du pont
Nom du paramètre | Description | Type | Valeurs | Défaut | Périmètre | |||
Emplacement du pilote | Répertoire où se situent les fichiers des pilotes JDBC. Lorsque la valeur est vide (par défaut), le pont tente de télécharger les fichiers du pilote depuis Maven. Le nom de la classe du pilote par défaut est 'com.ibm.db2.jcc.DB2Driver'. Si le pilote spécifié a un nom de classe différent, spécifiez-le à l'aide de l'option -driver.className dans le paramètre Divers du pont. |
RÉPERTOIRE | ||||||
Host | Nom de l'hôte utilisé par JBDC pour se connecter au serveur de la base de données (localhost par défaut), par exemple : MyDatabaseServer.com ou son adresse IP, par ex. 192.169.1.2 ou sa chaîne de connexion JDBC entièrement qualifiée, par exemple : jdbc:db2://COMPUTER_NAME_OR_IP:PORT/DATABASE_NAME |
Chaîne de caractères | localhost | Éléments obligatoires | ||||
Port | Port utilisé par JDBC pour se connecter au serveur de la base de données (446 par défaut pour IBM DB2 UDB). Ce paramètre est ignoré si le paramètre Hôte se base sur une chaîne de connexion JDBC entièrement qualifiée incluant le port. |
NUMERIC | 446 | |||||
Base de données | Nom de l'instance de base de données à importer. Connu également comme le nom de la base de données dans la syntaxe CREATE. https://www.ibm.com/docs/en/db2/10.5?topic=commands-create-database par ex. DB2DBNAME |
Chaîne de caractères | Éléments obligatoires | |||||
User (Utilisateur) | Nom d'utilisateur utilisé par JDBC pour se connecter au serveur de la base de données. Ce paramètre est ignoré si le paramètre Hôte se base sur une chaîne de connexion JDBC entièrement qualifiée incluant l'identifiant. Consultez la section AUTORISATIONS de la documentation principale de ce pont d'import. |
Chaîne de caractères | ||||||
Password | Mot de passe d'utilisateur utilisé par JDBC pour se connecter au serveur de la base de données. | MOT DE PASSE | ||||||
Schemas | Le sous-ensemble de schémas à importer exprimé sous forme de liste de noms de schémas séparés par un point-virgule, par ex. schema1; schema2 Tous les schémas utilisateurs accessibles sont importés si cette liste est vide. Tous les schémas système (par ex. SysAdmin) et les objets sont ignorés par défaut. Si des schémas système sont nécessaires, utilisez l'option -system.objects.import du paramètre Miscellaneous (Divers). Modèles de noms de schémas utilisant les règles de syntaxe utilisées par l'opérateur LIKE en SQL : - Syntaxe d'inclusion : utilisant % ou *, par ex. A%; %B; %C%; D - commençant par A ou - finissant par B ou - contenant C ou - égal à D - Syntaxe d'exclusion : utilisant NOT, par exemple : A%; %B; NOT %SYS; NOT 'SYS%' - WHERE (name like A% or name like %B) - et (name NOT like %SYS) - et (name NOT like 'SYS%') - Caractères spéciaux : ^ $ * + ? | \ ( ) [ ] { } espace blanc entourez ce nom de crochets et échappez des caractères spéciaux, par ex. OneWord%; [Two\sWords.*]; [Dollar\$] |
REPOSITORY_SUBSET | ||||||
Tables | Le sous-jeu de tables à importer sous la forme d'une liste d'objets de schémas séparés par un point-virgule, par exemple des tables, vues ou fonctions : table1; table2; view1; function1 Ce paramètre supporte également l'annotation [database.][schema.]table point avec les caractères de remplacement * afin d'activer la spécification des groupes d'objets à importer, par ex. database1.schema1.table1; database1.*.table2; database1.schema3.*; Tous les objets utilisateurs supportés par le pont sont importés si cette liste est vide. Toutes les tables système (par ex. SysAdmin) et les objets sont ignorés par défaut. Si des tables système sont nécessaires, utilisez l'option -system.objects.import du paramètre Miscellaneous (Divers). Modèles de noms de tables utilisant une syntaxe d'expression SQL LIKE : - Syntaxe d'inclusion : utilisant % ou *, par ex. A%; %B; %C%; D - commençant par A ou - finissant par B ou - contenant C ou - égal à D - Syntaxe d'exclusion : utilisant NOT, par exemple : A%; %B; NOT %SYS; NOT 'SYS%' - WHERE (name like A% or name like %B) - et (name NOT like %SYS) - et (name NOT like 'SYS%') - Caractères spéciaux : ^ $ * + ? | \ ( ) [ ] { } espace blanc entourez ce nom de crochets et échappez des caractères spéciaux, par ex. OneWord%; [Two\sWords.*]; [Dollar\$] |
Chaîne de caractères | ||||||
Informations concernant les procédures stockées | Contrôle la quantité de détails importés depuis les procédures stockées : 'Signature' Le nom et les paramètres des procédures stockées 'Code, signature' Les éléments susmentionnés plus le code 'None (Aucun)' Les détails des procédures stockées ne sont pas inclus. |
ÉNUMÉRATION |
|
Signature | ||||
Importer les index | Contrôle l'import des index : 'False (Faux)' Les index ne sont pas importés 'True (Vrai)' Les index sont importés |
BOOLEAN |
|
false | ||||
Miscellaneous | INTRODUCTION Spécifiez les options Divers, commençant par un tiret et suivies éventuellement par des paramètres, par exemple : -connection.cast MyDatabase1="MICROSOFT SQL SERVER" Certaines options peuvent être utilisées plusieurs fois, si applicable, par exemple : -connection.rename NewConnection1=OldConnection1 -connection.rename NewConnection2=OldConnection2; La liste d'options pouvant être une longue chaîne, il est possible de la charger à partir d'un fichier qui doit être situé dans ${MODEL_BRIDGE_HOME}\data\MIMB\parameters et avoir l'extension .txt. Dans ce cas, toutes les options doivent être définies au sein de ce fichier comme seule valeur de ce paramètre, par exemple ETL/Miscellaneous.txt OPTIONS DE L'ENVIRONNEMENT JAVA -java.memory <taille maximale de la mémoire Java> (anciennement -m) 1 Go par défaut sur un JRE de 64 bits ou tel que défini dans conf/conf.properties, par exemple -java.memory 8G -java.memory 8000M -java.parameters <options de ligne de commande de Java Runtime Environment> (anciennement -j) Cette option doit être la dernière dans le paramètre Divers car tout le texte après -java.parameters est passé tel quel à la JRE. Par ex. -java.parameters -Dname=value -Xms1G L'option suivante doit être définie lorsqu'un proxy est utilisé pour accéder à Internet (cela est essentiel pour accéder à https://repo.maven.apache.org/maven2/ et exceptionnellement à quelques autres sites d'outils) afin de télécharger les bibliothèques logicielles tierces nécessaires. Note : La majorité des proxys sont relatifs au chiffrement (HTTPS) du trafic extérieur (à l'entreprise) et à la confiance en le trafic intérieur pouvant accéder au proxy via HTTP. Dans ce cas, une requête HTTPS atteint le proxy via HTTP où le proxy la chiffre en HTTPS. -java.parameters -java.parameters -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttp.proxyUser=user -Dhttp.proxyPassword=pass OPTIONS D'IMPORT DU MODÈLE -model.name <nom modèle> Écrase le nom du modèle, par ex. -model.name "My Model Name" -prescript <nom script> Cette option permet d'exécuter un script avant l'exécution du pont. Le script doit se situer dans le répertoire bin (ou comme spécifié dans M_SCRIPT_PATH dans conf/conf.properties) et avoir une extension .bat ou .sh. Le chemin d'accès au script ne doit pas inclure de symbole relatif au répertoire parent (..). Le script doit retourner le code de sortie 0 pour indiquer un succès ou une autre valeur pour indiquer un échec. Par exemple : -prescript "script.bat arg1 arg2" -postscript <nom script> Cette option permet d'exécuter un script après l'exécution réussie du pont. Le script doit se situer dans le répertoire bin (ou comme spécifié dans M_SCRIPT_PATH dans conf/conf.properties) et avoir une extension .bat ou .sh. Le chemin d'accès au script ne doit pas inclure de symbole relatif au répertoire parent (..). Le script doit retourner le code de sortie 0 pour indiquer un succès ou une autre valeur pour indiquer un échec. Par exemple : -postscript "script.bat arg1 arg2" -cache.clear Vide le cache avant l'import et va exécuter un import complet avec collecte incrémentale. Si le modèle n'a pas été modifié et que le paramètre -cache.clear n'est pas utilisé (collecte incrémentale), une nouvelle version ne sera pas créée. Si le modèle n'a pas été modifié et que le paramètre -cache.clear n'est pas utilisé (collecte incrémentale), une nouvelle version ne sera pas créée. -backup <répertoire> Permet d'enregistrer les métadonnées d'entrée à des fins de débogage. Le <répertoire> fourni doit être vide. -restore <répertoire> Spécifiez le <répertoire> de sauvegarde à restaurer. OPTIONS DES CONNEXIONS DE DONNÉES Les connexions de données sont produites par les ponts d'import, généralement à partir des outils ETL/DI et BI pour faire référence aux data stores sources et cibles qu'elles utilisent. Ces connexions de données sont ensuite utilisées par les outils de gestion des métadonnées pour connecter ces dernières (connexion des métadonnées) à leurs data stores réels (par exemple, bases de données, système de fichiers, etc.) afin de produire le lignage complet de flux de données et de l'analyse d'impact de bout en bout. Le nom des connexions de données doit être unique dans chaque modèle d'import. Les noms de connexion de données utilisés dans les outils de conception DI/BI sont utilisés quand cela est possible, sinon ils sont générés en étant courts mais significatifs, comme le nom de la base de données/du schéma, le chemin d'accès au système de fichiers ou l'URI (Uniform Resource Identifier). L'option suivante vous permet de manipuler les connexions. Ces options remplacent les options héritées -c, -cd et -cs. -connection.cast ConnectionName=ConnectionType Lance une connexion à une base de données générique (par exemple ODBC/JDBC) pour un type de base de données précis (par exemple ORACLE) pour une analyse SQL, par exemple -connection.cast "My Database"="MICROSOFT SQL SERVER". La liste des types de connexions aux data stores comprend : ACCESS APACHE CASSANDRA DB2/UDB DENODO GOOGLE BIGQUERY HIVE MYSQL NETEZZA ORACLE POSTGRESQL PRESTO REDSHIFT SALESFORCE SAP HANA SNOWFLAKE MICROSOFT SQL AZURE MICROSOFT SQL SERVER SYBASE SQL SERVER SYBASE AS ENTERPRISE TERADATA VECTORWISE HP VERTICA -connection.rename OldConnection=NewConnection Renomme une connexion existante, par exemple, par ex. -connection.rename OldConnectionName=NewConnectionName Plusieurs connexions de bases de données existantes peuvent être renommées et fusionnées en une nouvelle connexion de base de données, par exemple : -connection.rename MySchema1=MyDatabase -connection.rename MySchema2=MyDatabase -connection.split oldConnection.Schema1=newConnection Scinde une connexion de base de données en une ou plusieurs connexions de base de données. Une connexion de base de données peut être scindée en une connexion par schéma, par exemple : -connection.split MyDatabase Toutes les connexions de base de données peuvent être fractionnées en une connexion par schéma, par exemple : -connection.split * Une connexion de base de données peut être explicitement fractionnée en une nouvelle connexion de base de données en ajoutant un nom de schéma à une base de données, par exemple : -connection.split MyDatabase.schema1=MySchema1 -connection.map SourcePath=DestinationPath Mappe un chemin d'accès source à un chemin d'accès de destination. Cela est utile pour les connexions aux systèmes de fichiers lorsque différents chemins d'accès pointent vers le même objet (répertoire ou fichier). Sur Hadoop, un processus peut écrire dans un fichier CSV spécifié avec le chemin d'accès complet HDFS, tandis qu'un autre processus lit d'une table Hive implémentée (externe) par le même fichier spécifié à l'aide d'un chemin d'accès relatif avec un nom et une extension de fichier par défaut, par exemple : -connection.map /user1/folder=hdfs://host:8020/users/user1/folder/file.csv Sous Linux, il peut être fait référence à un répertoire (ou à un fichier) donné tel que /data par plusieurs liens symboliques tels que /users/john et /users/paul, par exemple : -connection.map /data=/users/John -connection.map /data=/users/paul Sous Windows, il peut être fait référence à un répertoire donné tel que C:\data par plusieurs lecteurs réseau tels que M: et N:, par exemple : -connection.map C:\data=M:\ -connection.map C:\data=N:\ -connection.casesensitive ConnectionName... Écrase les règles de rapprochement insensibles à la casse par défaut pour les identifiants d'objets dans la connexion spécifiée, si le type du data store détecté supporte cette configuration (par ex. Microsoft SQL Server, MySQL etc.), par exemple : -connection.casesensitive "My Database" -connection.caseinsensitive ConnectionName... Écrase les règles de rapprochement sensibles à la casse par défaut pour les identifiants d'objets dans la connexion spécifiée, si le type du data store détecté supporte cette configuration (par ex. Microsoft SQL Server, MySQL etc.), par exemple : -connection.caseinsensitive "My Database" -connection.level AggregationLevel Spécifie le niveau d'agrégation pour les connexions externes, par exemple -connection.level catalog Liste des valeurs supportées : server (serveur) catalog (catalogue) schema (schéma)(par défaut) OPTIONS BASE DE DONNÉES JDBC -system.objects.import (précédemment -s) Importez tous les objets système (ignorés par défaut). -synonyms.ignore (précédemment -synonyms) Ignore les synonymes lors de l'import, réduisant ainsi la taille du modèle lorsque de nombreux synonymes existent. -data.dictionary.server <database identification name> (précédemment -server.name) Configure un nom de serveur pour le dictionnaire de données à utiliser pour extraire les définitions des tables et des vues. Dans une base de données de conteneur multi-tenant (Container Database, CDB), les métadonnées des définitions des tables et vues de dictionnaires de données sont stockées uniquement au niveau racine. Toutefois, chaque base de données connectable (Pluggable Database, PDB) possède son propre ensemble de tables et vues de dictionnaires de données pour les objets de base de données contenus dans la PDB. Il est possible que certaines vues dba_ ne soient pas disponibles, car non applicables. -driver.fetch.size <number of rows> (précédemment -f) Taille de récupération du pilote de la base de données en nombre de lignes. Par exemple : -driver.fetch.size 100 -model.split (précédemment -multiModel) Scinde un modèle de base de données volumineux en multi-modèles (p. ex. un schéma par modèle). Avertissement : ceci est une option du système gérée par l'application qui appelle ce pont d'import et qui ne doit pas être configurée par les utilisateurs. -driver.className Le nom complet (y compris le nom de package) de la classe Java qui implémente l'interface du pilote JDBC. |
Chaîne de caractères |
Mapping du pont
Meta Integration Repository (MIR) Métamodèle (se base sur le standard OMG CWM) |
"Base de données IBM DB2 Universelle (UDB) (via JDBC)" Métamodèle JdbcIbmDb2Udb |
Mapping des commentaires |
Name (Nom) | Name (Nom) | |
Argument | Colonne de Procédure | Les paramètres de procédure stockée sont stockés dans les arguments |
Description | Commentaires sur la colonne | |
Type | Type | Le type de paramètre |
Name (Nom) | Name (Nom) | |
Association | Clées exportées | |
Agrégation | True (Vrai) si tous les attributs de la clé exportée sont dans la clé primaire | |
AssociationRole | Clées exportées | |
ExtraConstraint | Mettre à jour la règle, Supprimer la règle | |
Multiplicité | Propriété nullable des colonnes de la clé exportée | |
Source | Basé sur la multiplicité de chaque rôle | |
AssociationRoleNameMap | Clées exportées | La map Rolename est créée si les colonnes des clés primaire et étrangère sont différentes |
Attribut | Colonne de table | |
Comment | Commentaires sur la colonne | |
InitialValue | Valeur par défaut | |
Name (Nom) | Name (Nom) | |
Facultatif | Basé sur la propriété nullable | |
PhysicalName | Name (Nom) | |
Position | Position | Si la position n'est pas fournie, l'ordre dans lequel les attributs sont récupérés est utilisé. |
BaseType | Types | |
DataType (TypeDeDonnées) | Data Type (Type de données) | Voir le tableau de conversion des types de données |
Length (Longueur) | Size (Taille) | |
Name (Nom) | Le nom est calculé à partir du type de données | |
PhysicalName | Name (Nom) | |
Échelle | Échelle maximale | |
CandidateKey | index, Clé primaire | |
Name (Nom) | Name (Nom) | |
PhysicalName | Name (Nom) | |
UniqueKey | Propriété non unique | |
Classe | Table | de type "TABLE" |
Comment | Commentaires sur la table | |
CppClassType | Configuré comme ENTITÉ | |
CppPersistent | Configuré à Vrai | |
Name (Nom) | Name (Nom) | |
PhysicalName | Name (Nom) | |
ClassDiagram | Schéma | Un diagramme de classe est créé pour chaque package et contient tous les éléments du package |
DerivedType | Colonne | Colonne de table, colonne de procédure stockée, colonne de Vue SQL ou type |
DataType (TypeDeDonnées) | Data Type (Type de données) | Voir le tableau de conversion des types de données |
Length (Longueur) | Size (Taille) | |
Name (Nom) | Le nom est calculé à partir du type de données | |
PhysicalName | Name (Nom) | |
Échelle | Chiffres décimaux | |
UserDefined | True pour Type | |
DesignPackage | Schéma | Un package est créé pour chaque schéma récupéré. S'il n'y a pas de schéma, un package par défaut est créé. |
Name (Nom) | Name (Nom) | Configurez à "Schema (Schéma)" s'il n'y a pas de schéma ou si le schéma n'a pas de nom. |
ForeignKey | Clées exportées | |
Name (Nom) | Name (Nom) | |
PhysicalName | Name (Nom) | |
Index | Index, Clé primaire, Clés exportées | |
Mis en cluster | Type d'index | true (vrai) si le type d'index est tableIndexClustered |
Name (Nom) | Name (Nom) | |
PhysicalName | Name (Nom) | |
IndexMember | Membre de l'index, Membre de la clé | |
Position | Position dans l'index ou la clé | |
SortOrder | Tri ascendant/descendant | |
SQLViewAttribute | Colonne de vues | |
Comment | Commentaires sur la colonne | |
Name (Nom) | Name (Nom) | |
PhysicalName | Name (Nom) | |
Position | Position ordinale | |
SQLViewEntity | Table | de type "VUE" |
Comment | Commentaires sur la table | |
Name (Nom) | Name (Nom) | |
PhysicalName | Name (Nom) | |
StoreModel | Catalogue | Le modèle est construit à l'aide des éléments contenus dans le catalogue (le catalogue utilisé par défaut pour Teradata) |
Name (Nom) | Name (Nom) | Configuré à "Catalogue". |
StoredProcedure | Procédure stockée | |
Description | Commentaires sur la procédure stockée | |
Name (Nom) | Nom |