![Deprecated feature](../../base/images/deprecated.png)
Alterar el SQL generado para la búsqueda paramétrica
Puede haber casos en los que desee alterar temporalmente el SQL generado para consultas de búsqueda paramétrica. Por ejemplo, si una determinada búsqueda paramétrica no se está ejecutando correctamente, el administrador de base de datos puede sugerir otro modo de escribir el SQL. En este caso, puede alterar completamente el SQL utilizado para la consulta de búsqueda paramétrica.
Procedimiento
-
Si aún no lo ha creado, cree un archivo de plantilla de consulta personalizado:
- Cree una carpeta WC\config\com.ibm.commerce.servicemodule-ext, si todavía no existe ninguna.
- Pulse el botón derecho del ratón en la carpeta WC\config\com.ibm.commerce.servicemodule-ext. Debe crear la carpeta en el directorio -ext. No modifique las plantillas de consulta directamente.
- Pulse
- Ponga un nombre al archivo de plantilla de consulta personalizado, utilizando una serie que sea exclusiva (el nombre de su empresa) para diferenciarlo, por ejemplo: wc-query-MyCompanyCatalogEntry-get.tpl.
- Pulse Finalizar.
-
Defina un nuevo bloque XPATH_TO_SQL_STATEMENT en el archivo de plantilla personalizado. El nombre de la consulta debe ser la clave XPath, con la excepción de que se han especificado explícitamente los parámetros de búsqueda.
Por ejemplo, si la expresión de XPath era:
/CatalogEntry[search(contains(Description/ShortDescription, "Polo shirt") and starts-with(CatalogEntryIdentifier/ExternalIdentifier/PartNumber, "FU01"))]
Normalmente, el nombre de clave de XPath es:name=/CatalogEntry[search()]
No obstante, para indicar que quiere alterar temporalmente el SQL generado, incluya explícitamente los parámetros de búsqueda, y altere temporalmente el SQL en el archivo de plantilla personalizado, tal como se muestra en la consulta de ejemplo siguiente:
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