Cláusulas Where

Varios métodos de Servicios Web, como doSelect() y doQuery() necesitan cláusulas Where para realizar búsquedas. Una cláusula Where es la cadena que aparece después de la palabra clave "WHERE" en una instrucción SQL. Por ejemplo, un ejemplo de cláusula Where para buscar contactos (el objeto "cnt") por los apellidos puede ser el siguiente:

last_name = "Jones"

or

last_name LIKE "Jone%"

El segundo ejemplo busca todos los contactos con nombres que empiecen por "Jone", mientras que el primero sólo busca "Jones".

CA Service Desk Manager sólo admite un subconjunto de parámetros SQL estándar para las cláusulas Where, que son los siguientes:

Se permiten paréntesis para las agrupaciones. No se admiten las uniones explícitas ni los elementos EXISTS y GROUP BY.

Los nombres de columna son simplemente nombres de atributo de objeto. Debe utilizar los nombres definidos para los atributos en el nivel del objeto; no utilice los nombres de columna de DBMS reales. Los valores de cadena se deben incluir entre comillas, como en el ejemplo anterior. Los tipos de datos de CA Service Desk Manager, como fecha y duración, se tratan como números enteros, como se muestra en el siguiente ejemplo:

creation_date > 38473489389

Se permite la notación con puntos en la cláusula Where para buscar en los tipos de SREL (clave externa). Por ejemplo, la consulta siguiente sobre el objeto de solicitud ("cr") devuelve todas las solicitudes asignadas a contactos con unos apellidos específicos, como se muestra en el ejemplo siguiente:

assignee.last_name like "Martin%"

La notación con puntos resulta muy cómoda a la hora de formar cláusulas Where, pero debe tener cuidado para garantizar que la consulta sea eficaz. Consultar en el ejemplo puede no ser eficaz si el atributo last_name del contacto no se ha indizado en DBMS (no obstante, sí lo es en este ejemplo). Para garantizar que se utilicen índices de la forma que mejor le convenga en las SREL, utilice los atributos id de los objetos de CA Service Desk Manager. Todas las tablas de CA Service Desk Manager tienen un índice en el atributo id.

El atributo id de un objeto se obtiene fácilmente del identificador del objeto. Como se señaló anteriormente, un identificador de objeto es una cadena con el formato "<objectName>:<id>", donde id es el valor del atributo id que se encuentra en cada objeto de CA Service Desk Manager. Sólo tiene que extraer la parte de id y utilizar "<attributeName>.id" en la cláusula Where.

El ID de un objeto es un número entero o un UUID. Si es un número entero, utilícelo como tal. Por ejemplo, para buscar solicitudes con la causa raíz apuntando a un objeto Root Cause (causa raíz) con identificador, "rc:1234", la cláusula Where es:

rootcause.id = 1234

Si el ID de un objeto es de tipo UUID, debe asignarle el siguiente formato:

U"<uuid>"  

La representación de cadena de un uuid está rodeada de comillas simples y lleva el carácter "U" en mayúscula a modo de prefijo. La representación de cadena de un valor UUID es la parte <id> de un identificador de objeto.

Usando el ejemplo anterior, si sabe que el identificador de un determinado contacto es "cnt: 913B485771E1B347968E530276916387", puede formular la consulta tal y como se muestra en el siguiente ejemplo:

assignee.id = U"913B485771E1B347968E530276916387"

No formule cláusulas Where que consulten el atributo "persistent_id", como en el ejemplo siguiente:

rootcause.persistent_id = "rc:1234"

Para obtener más información sobre identificadores, consulte la sección Identificadores iniciales.

Más información:

Diccionario de elementos de datos

Objetos y atributos

Referencias cruzadas entre tablas y objetos


Copyright © 2011 CA. Todos los derechos reservados.