Plusieurs méthodes des services Web, comme doSelect() et doQuery(), nécessitent des clauses WHERE lors des recherches. Une clause WHERE consiste en une chaîne apparaissant après le mot clé WHERE dans une instruction SQL. Voici un exemple de clause WHERE permettant de rechercher des contacts (objet cnt) par nom de famille :
last_name = ’Jones’
ou
last_name LIKE ’Jone%’
Ce deuxième exemple permet de rechercher tous les contacts dont le nom de famille commence par Jone, tandis que le premier exemple ne recherche que les Jones.
CA SDM prend en charge uniquement un sous-ensemble des paramètres SQL standard pour les clauses WHERE. Ils sont répertoriés ci-après.
Les parenthèses sont autorisées pour le regroupement. Les jointures explicites ainsi que les éléments EXISTS et GROUP BY ne sont pas acceptés.
Les noms de colonnes correspondent tout simplement aux noms des attributs. Vous devez utiliser les noms définis pour les attributs au niveau de l'objet. N'utilisez pas les noms de colonne SGBD réels. Les valeurs de chaînes doivent être entre guillemets, comme l’indique l’exemple précédent. Les types de données CA SDM, tels que la date et la durée, sont traités comme des nombres entiers comme le montre l'exemple suivant :
creation_date > 38473489389
La notation par insertion de point est autorisée dans la clause WHERE pour effectuer des recherches dans les types SREL (clé étrangère). Par exemple, la requête suivante concernant l'objet Demande (cr), renvoie toutes les demandes assignées aux contacts portant un certain nom, comme le montre l'exemple suivant :
assignee.last_name like ’Martin%’
La notation par insertion de point est très utile pour la formulation de clauses WHERE, mais vous devez vous assurer que la requête est efficace. La requête de cet exemple pourrait s’avérer inefficace si l’attribut last_name du contact n’a pas été indexé dans le SGBD (dans cet exemple, l’attribut est indexé). Pour s'assurer que les index sont utilisés au mieux lors des recherches effectuées dans les SREL, utilisez les attributs d'id des objets CA SDM. Toutes les tables dans CA SDM ont un index sur l'attribut d'ID.
Il est facile d’obtenir l’attribut id d’un objet à partir du descripteur d’un objet. Comme indiqué précédemment, le descripteur d'un objet est constitué d'une chaîne de type <objectName>:<id>, où ID est la valeur de l'attribut id présente dans chaque objet CA SDM. Il suffit d’extraire la portion id et d’utiliser <attributeName>.id dans la clause WHERE.
L’ID d’un objet peut être soit un nombre entier, soit un UUID. S’il s’agit d’un nombre entier, utilisez-le tel quel. Par exemple, pour rechercher des demandes dont la cause première pointe vers un objet Cause première doté d'un descripteur rc:1234, la clause WHERE est la suivante :
rootcause.id = 1234
Si l’ID d’un objet est de type UUID, vous devez alors utiliser le format suivant :
U’<uuid>’
La représentation d’un UUID sous forme de chaîne se présente entre guillemets simples et est précédée de la lettre majuscule U. La représentation d’une valeur UUID sous forme de chaîne correspond à la partie <id> d’un descripteur d’objet.
Utilisant l'exemple précédent, si vous savez que le descripteur pour un contact particulier est "cnt : 913B485771E1B347968E530276916387", vous pouvez former la requête, comme affichée par l'exemple suivant :
assignee.id = U’913B485771E1B347968E530276916387’
Ne formulez pas de clause WHERE pour interroger l’attribut persistent_id, comme dans l’exemple suivant :
rootcause.persistent_id = ’rc:1234’
Pour plus d’informations sur les descripteurs, reportez-vous à la section « Descripteurs préconfigurés ».
|
Copyright © 2013 CA.
Tous droits réservés.
|
|