Argomento precedente: Elenchi

Argomento successivo: Clausola IN

Clausole where

Alcuni metodi dei servizi Web, ad esempio, doSelect() e doQuery(), richiedono l'utilizzo delle clausole where per eseguire le ricerche. Una clausola where è la stringa presente dopo la parola chiave 'WHERE' in un'istruzione SQL. Ad esempio, una clausola where per trovare i contatti (l'oggetto 'cnt') in base al cognome può essere la seguente:

last_name = 'Jones'

or

last_name LIKE 'Jone%'

Il secondo esempio trova tutti i contatti il cui nome inizia con la parola 'Jone', mentre il primo esempio trova solo la parola 'Jones'.

CA SDM supporta un solo sottoinsieme di parametri SQL standard per le clausole where. Di seguito è riportato l'elenco dei parametri:

Per il raggruppamento è possibile utilizzare le parentesi. Non sono supportate le operazioni di unione esplicite e gli elementi EXISTS e GROUP BY.

I nomi delle colonne rappresentano semplicemente i nomi degli attributi dell'oggetto. È necessario utilizzare i nomi definiti per gli attributi a livello di oggetto. Non utilizzare i nomi di colonna DBMS effettivi. I valori di tipo stringa devono essere specificati tra apici, come mostrato nell'esempio precedente. I tipi di dati di CA SDM, ad esempio date e duration, vengono trattati come valori interi, come mostrato nell'esempio seguente:

creation_date > 38473489389

La notazione a punti è consentita nella clausola where per eseguire ricerche con i tipi di puntatori SREL (chiave esterna). Ad esempio, la query seguente eseguita sull'oggetto Richiesta ('cr'), restituisce tutte le richieste assegnate ai contatti con un cognome specifico, come mostrato dall'esempio seguente:

assignee.last_name like 'Martin%'

La notazione a punti è particolarmente vantaggiosa per creare le clausole where, ma è necessario essere certi che la query sia efficiente. La query riportata nell'esempio potrebbe rivelarsi inefficiente se l'attributo last_name del contatto non è stato indicizzato nel DBMS (tuttavia, in questo esempio lo è). Per essere certi che gli indici vengano utilizzati al meglio nelle ricerche con i puntatori SREL, utilizzare gli attributi ID degli oggetti di CA SDM. Tutte le tabella presenti in CA SDM hanno un indice nell'attributo ID.

L'attributo id di un oggetto è facilmente ricavabile dall'handle dell'oggetto. Come precedentemente descritto, un handle dell'oggetto è una stringa in formato "<objectName>:<ID>", dove ID è il valore dell'attributo ID presente in tutti gli oggetti di CA SDM. Estrarre semplicemente la parte id e utilizzare "<attributeName>.id" nella clausola where.

L'id di un oggetto è sempre un valore intero o un UUID. Se si tratta di un valore intero, utilizzarlo così com'è. Ad esempio, per ricercare gli oggetti Richiesta con la causa principale che punta a un oggetto Causa principale con l'handle, "rc:1234", la clausola where è:

rootcause.id = 1234

Se l'id di un oggetto è un UUID, è necessario utilizzarlo come mostrato di seguito:

U'<uuid>'  

La rappresentazione della stringa di un uuid è racchiusa tra apici e preceduta dal carattere maiuscolo 'U'. La rappresentazione della stringa di un valore UUID è la parte <id> di un handle di oggetto.

Utilizzando l'esempio precedente, se l'handle di un determinato contatto è "cnt: 913B485771E1B347968E530276916387", è possibile creare la query, come mostrato nell'esempio seguente:

assignee.id = U'913B485771E1B347968E530276916387'

Non creare clausole where che eseguono query sull'attributo 'persistent_id', come mostrato nell'esempio seguente:

rootcause.persistent_id = 'rc:1234'

Per ulteriori informazioni sugli handle, consultare Handle disponibili.

Ulteriori informazioni:

Dizionario degli elementi dei dati

Oggetti e attributi

Riferimenti incrociati tra tabelle e oggetti