DBQUERY
La fonction DBQUERY exécute une instruction SQL sur une base de données.
L'instruction SQL peut être toute instruction admise par le système de gestion de base de données ou le pilote ODBC.
Lorsque la fonction DBQUERY est utilisée dans une mappe, l'action Sur réussite par défaut est spécifique à l'adaptateur. L'action Sur échec par défaut doit annuler toute modification effectuée pendant le traitement de la mappe. L'Etendue par défaut est intégrale sauf si la mappe est définie pour s'exécuter par unités (ce qui est le cas lorsque la propriété Extraire en tant que d'une ou plusieurs entrées est définie par Unité).
Deux méthodes permettent de spécifier des arguments pour DBQUERY. Vous pouvez utiliser DBQUERY [Utilisation 1] pour exécuter une instruction SQL lorsque vous souhaitez rechercher des informations dans une base de données à l'aide d'une requête paramétrée, basée sur une autre valeur de vos données. Si l'instruction SQL est une instruction SELECT, la fonction DBQUERY peut être utilisée avec la fonction RUN pour générer des instructions SELECT dynamiques dont les résultats peuvent être utilisés en tant qu'entrée dans une autre mappe.
Vous pouvez également utiliser la fonction DBQUERY [Utilisation 2] pour exécuter une instruction SQL lorsque les paramètres de la base de données, de la table ou d'une autre base de données risquent d'être modifiés, en étant, par exemple, fournis par un fichier de paramètres.
- Syntaxe :
DBQUERY ( expression-texte-unique, expression-texte-unique, [ littéral-texte-unique ] )
- Signification :
- DBQUERY (instruction_SQL, nomfichier_mdq, nom_bdd)
- DBQUERY ( instruction_SQL , paramètres )
- Renvoie :
- Un élément texte unique
Si l'instruction SQL est une instruction SELECT, les résultats de la requête sont au même format qu'une requête spécifiée en tant que carte en entrée de mappe, y compris pour les délimiteurs et les caractères de fin de ligne, etc.
Si l'instruction SQL est différente d'une instruction SELECT, la valeur renvoyée est "none".
Arguments pour l'utilisation 1
DBQUERY (instruction_SQL, nomfichier_mdq, nom_bdd)
- instruction_SQL
Le premier argument est une instruction SQL au format chaîne de texte. Il peut s'agir de toute instruction SQL valide, admise par le système de gestion de base de données et prise en charge par le pilote spécifique de la base de données. Outre une instruction SQL fixe, cet argument peut être une concaténation de littéraux de texte et d'objets données, ce qui permet la concaténation de valeurs de données dans l'instruction SQL.
- nomfichier_mdq
Le second argument est le nom d'un fichier de requête de base de données (.mdq) produit par Database Interface Designer. Il contient la définition de la base de données sur laquelle l'instruction SQL doit être exécutée. Si le fichier .mdq se trouve dans un répertoire différent du répertoire de la mappe, le chemin d'accès doit être spécifié.
Remarque : L'accès au fichier .mdq est effectué en phase de construction de la mappe et le fichier est inutile en phase d'exécution. - database_name
Le troisième argument est le nom d'une base de données dans le fichier de requête de base de données (.mdq) tel qu'il est défini dans Database Interface Designer.
Dans cette méthode, le nom du fichier .mdq et le nom de la base de données doivent être des littéraux.
Arguments pour l'utilisation 2
DBQUERY ( instruction_SQL , paramètres )
- Le premier argument est une instruction SQL au format chaîne de texte. Il peut s'agir de toute instruction SQL valide, admise par le système de gestion de base de données et prise en charge par le pilote spécifique de la base de données. Outre une instruction SQL fixe, cet argument peut être une concaténation de littéraux de texte et d'objets données, ce qui permet la concaténation de valeurs de données dans l'instruction SQL.
- Le second argument est un ensemble de paramètres, soit :
- -MDQ nomfichiermdq -DBNAME nombdd
-ou-
- -DBTYPE type_bdd [paramètres spécifiques à la base de données]
Le mot clé -MDQ est suivi du nom du fichier de requête de base de données (.mdq) produit par Database Interface Designer. Le fichier .mdq contient la définition de la base de données. Si le fichier .mdq se trouve dans un répertoire différent du répertoire de la mappe, le chemin d'accès doit être spécifié. Le nom de fichier .mdq est suivi du mot clé -DBNAME et du nom de la base de données comme indiqué dans Database Interface Designer.
Remarque : Cette syntaxe permet d'accéder au fichier .mdq en phase d'exécution ; ce fichier doit exister.Le mot clé -DBTYPE est suivi d'un mot clé spécifiant le type de base de données (par exemple, ODBC ou ORACLE) suivi éventuellement des paramètres spécifiques de la base de données.
Remarque : Cette syntaxe n'utilise pas de fichier .mdq car les paramètres spécifiques de la base de données fournissent les informations nécessaires à la connexion à la base de données. Pour plus de détails sur les paramètres spécifiques d'une base de données, consultez la documentation appropriée sur l'adaptateur de base de données.
- -MDQ nomfichiermdq -DBNAME nombdd
Avec l'utilisation 2, la fonction DBQUERY doit respecter les règles suivantes :
- Tous les mots clés (par exemple, -DBTYPE) doivent être en majuscules ou en minuscules et la casse ne peut pas être mixte.
- Un espace est requis entre le mot clé et sa valeur (par exemple, -DBTYPE ODBC).
- L'ordre des mots clés n'est pas important.
Tous les paramètres spécifiques de la base de données sont facultatifs.
Exemples
| REFERENCE_PIECE | NOM_PIECE |
|---|---|
| 1 | Boulon 1/4" x 3" |
| 2 | Boulon 1/4" x 4" |
Considérons également que cette base de données a été définie à l'aide de Database Interface Designer dans un fichier nommé test.mdq et que le nom de la base de données, tel qu'il spécifié dans le fichier .mdq, est BD_Pièces.
DBQUERY ( "SELECT * from PARTS" , "mytest.mdq" , "PartsDB" ) Renvoie 1| Boulon ¼" x 3"<cr><lf>2|Boulon ¼" x 4"<cr><lf>
où <cr><lf> est un retour chariot suivi d'une nouvelle ligne.
L'utilisation 2 vous permet également de spécifier la fonction DBQUERY de la façon suivante :
DBQUERY ( "SELECT * from PARTS" , "-MDQ mytest.mdq -DBNAME PartsDB" ) où le nom du fichier .mdq et le nom de la base de données sont spécifiés.
Avec l'utilisation 2, vous pouvez également spécifier le type de la base de données et les paramètres spécifiques de la base de données appropriés :
DBQUERY ( "SELECT * from PARTS" , "-DBTYPE ORACLE -CONNECT MyDB -USER janes" )Considérons que vous disposez d'un fichier en entrée contenant un enregistrement de commande. Pour mapper cette commande sur un autre format propriétaire, vous disposez également d'une table très volumineuse de pièces avec des informations tarifaires pour chaque pièce et pour chaque client. Plutôt que d'utiliser la totalité de la table de pièces en entrée de votre mappe, vous pouvez indiquer la fonction RUN avec une requête DBQUERY pour sélectionner dynamiquement les seules lignes de la table de pièces correspondantes au client du fichier de commande, comme suit :
RUN ( "MapOrder.MMC" ,
"IE2" + DBQUERY ( "SELECT * FROM Parts WHERE CustID = "
+ CustomerNo:OrderRecord:OrderFile + " ORDER BY PartNo" ,
"PartsDB.MDQ", "PartsDatabase" ) )Fonctions associées
- DBLOOKUP
- EXTRACT
- ECHEC
- LASTERRORCODE
- LASTERRORMSG
- LOOKUP
- SEARCHUP
- SEARCHDOWN
- VALID