Cette section décrit la recherche dans une collection XML orientée vers les objectifs suivants :
Cette tâche correspond en fait à la composition à l'aide d'une condition. Vous pouvez préciser les critères de recherche suivants :
Par exemple, si vous avez activé la collection XML sales_ord à l'aide du fichier DAD order.dad, mais que vous ne voulez pas remplacer le prix avec les données de formulaire provenant d'une page Web, vous pouvez remplacer la valeur de l'élément DAD <SQL_stmt> comme suit :
EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION; ... EXEC SQL END DECLARE SECTION; float price_value; /* create table */ EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar); /* initialize host variable and indicators */ strcpy(collection,"sales_ord"); strcpy(result_tab,"xml_order_tab"); overrideType = SQL_OVERRIDE; max_row = 20; num_row = 0; returnCode = 0; msg_txt[0] = '\0'; override_ind = 0; overrideType_ind = 0; rtab_ind = 0; maxrow_ind = 0; numrow_ind = -1; returnCode_ind = -1; returnMsg_ind = -1; /* get the price_value from some place, such as form data */ price_value = 1000.00 /* for example*/ /* specify the overwrite */ sprintf(overwrite, "SELECT o.order_key, customer, p.part_key, quantity, price, tax, ship_id, date, mode FROM order_tab o, part_tab p, table (select substr(char(timestamp(generate_unique())),16) as ship_id, date, mode from ship_tab)as s WHERE p.price > %d and s.date >'1996-06-01' AND p.order_key = o.order_key and s.part_key = p.part_key", price_value); /* Call the store procedure */ EXEC SQL CALL db2xml!dxxRetrieve(:collection:collection_ind, :result_tab:rtab_ind, :overrideType:overrideType_ind,:overwrite:overwrite_ind, :max_row:maxrow_ind,:num_row:numrow_ind, :returnCode:returnCode_ind,:returnMsg:returnMsg_ind);
La condition de prix > 2500,00 dans order.dad est remplacée par price > ?, où ? dépend de la variable d'entrée price_value.
Vous pouvez effectuer des recherches dans les tables de la collection par des requêtes SQL classiques. Vous pouvez réaliser une jointure des tables de la collection ou lancer des sous-requêtes, puis effectuer une recherche structurelle sur les colonnes de texte. Avec les résultats de la recherche structurelle, vous pouvez appliquer ces données pour extraire ou générer le document XML indiqué.