Remplacement du code SQL généré pour recherche paramétrique
Dans certains cas, vous voudrez remplacer le code SQL généré pour les requêtes de recherche paramétrique. Par exemple, si une recherche paramétrique donnée ne fonctionne pas de manière satisfaisante, votre administrateur de base de données peut suggérer une autre manière de rédiger son code SQL. Dans ce cas, vous pouvez remplacer complètement le code SQL utilisé pour la requête de recherche paramétrique.
Procédure
-
Si ce n'est déjà fait, créez un fichier de modèle de requête personnalisé :
- Créez un dossier WC\config\com.ibm.commerce.servicemodule-ext, si celui-ci n'existe pas déjà.
- Cliquez avec le bouton droit sur le dossier WC\config\com.ibm.commerce.servicemodule-ext. Vous devez créer ce dossier dans le répertoire -ext. Ne modifiez pas directement les modèles de requête.
- Cliquez sur
- Attribuez un nom au fichier de modèle de requête personnalisé, en utilisant une chaîne unique (nom de votre entreprise) pour pouvoir le différencier, par exemple : wc-query-MyCompanyCatalogEntry-get.tpl.
- Cliquez sur Terminer.
-
Définissez un nouveau bloc XPATH_TO_SQL_STATEMENT dans votre fichier de modèle de requête. Le nom de la requête doit correspondre au nom de la clé XPath, si ce n'est que les paramètres de recherche doivent être spécifiés explicitement.
Par exemple, pour l'expression XPath :
/CatalogEntry[search(contains(Description/ShortDescription, "Polo shirt") and starts-with(CatalogEntryIdentifier/ExternalIdentifier/PartNumber, "FU01"))]En règle générale, le nom de clé XPath serait :name=/CatalogEntry[search()]Cependant, pour indiquer que vous désirez remplacer le code SQL généré, vous devez inclure explicitement les paramètres de recherche et remplacer le code SQL dans votre fichier de modèle de requête comme illustré dans l'exemple de requête ci-dessous :
BEGIN_XPATH_TO_SQL_STATEMENT name=/CatalogEntry[search(contains(Description/ShortDescription,) and starts-with(CatalogEntryIdentifier/ExternalIdentifier/PartNumber,))] base_table=CATENTRY sql= SELECT CATENTRY.CATENTRY_ID FROM CATENTRY, CATENTDESC IBM_1 WHERE CATENTRY.MARKFORDELETE = 0 AND CATENTRY.PARTNUMBER LIKE '?CatalogEntryIdentifier/ExternalIdentifier/PartNumber?%' AND (CATENTRY.CATENTRY_ID= IBM_1.CATENTRY_ID AND IBM_1.SHORTDESCRIPTION LIKE '%?Description/ShortDescription?%') ORDER BY CATENTRY.CATENTRY_ID END_XPATH_TO_SQL_STATEMENT