Deprecated feature

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

  1. Si ce n'est déjà fait, créez un fichier de modèle de requête personnalisé :
    1. Créez un dossier WC\config\com.ibm.commerce.servicemodule-ext, si celui-ci n'existe pas déjà.
    2. 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.
    3. Cliquez sur Nouveau > Autre > Simple > Fichier > Suivant
    4. 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.
    5. Cliquez sur Terminer.
  2. 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