Esecuzione di operazioni di ricerca

Le operazioni di ricerca possono essere considerate semplici e composite.

Questo principale distinguo intende differenziare le ricerche che combinano dati di diverse tabelle e ricerche che si basano esclusivamente su una tabella. Le seconde, considerate semplici, sono quelle direttamente eseguibili da eXtraWay dopo un'interpretazione dello statement SQL espresso e la sua trasformazione in un linguaggio noto ed uniforme. Il risultato di questo tipo di ricerche può ricondursi senza problemi all'esito delle comuni selezioni in linguaggio proprietario eXtraWay.
Le altre ricerche, considerate composite, richiedono una lavorazione a più passi. L'esito di quanto rilevato richiede, salvo eccezioni, di essere rappresentato (renderizzato) in forma di tabella temporanea distribuita in righe e colonne come si confà ai classici motori relazionali.

Ciò mette in evidenza come le due diverse tipologie di operazioni si debbano esprimere in modo differente e conducano a risultati altrettanto differenti.

Vediamo quale percorso operativo viene compiuto dal programma nell'elaborazione degli statement SQL di ricerca ricordando che il concetto di tabella proprio dei DataBase relazionali coincide al concetto eXtraWay di unità informativa ed il concetto di colonna coincide al concetto di canale di ricerca:

In primo luogo si deve identificare il punto di partenza. Esso è rappresentato dalla funzione Sql2Mgr_SqlAnalyzer(). Questa funzione può essere evocata tanto dalla funzione standard di ricerca (Ele_Ricerca()) quanto da un'apposita funzione destinata ad elaborare un comando XML. Il primo approccio si presta esclusivamente alle ricerche più semplici in quanto richiede espressamente che il risultato dell'operazione sia rappresentato da un file di selezione standard eXtraWay rappresentato quindi da un elenco più o meno ordinato di identificatori fisici ci unità informative. Il secondo approccio si presta, per contro, a tornare una tabella di righe e colonne che rappresentano la renderizzazione del risultato. Questo secondo caso apre le porta anche al trattamento di altri tipi di statement SQL, come ad esempio inserimenti e modifiche.

Rimaniamo comunque in tema: la funzione Sql2Mgr_SqlAnalyzer(). Questa stabilisce la natura dell'operazione da compiere ed evoca la fuzione più adeguata al suo trattamento, ovvero la Sql2Mgr_Select(). Per le operazioni di ricerca la funzione Sql2Mgr_SqlAnalyzer() verifica inoltre preventivamente le condizioni di ordinamento. Al termine dell'operazione di selezione e prima della produzione dell'output si provvede a compiere l'eventuale ordinamento richiesto.

La funzione Sql2Mgr_Select() è quella che effettivamente svolge tutto il lavoro significativo comportandosi come segue:

Una volta completata l'operazione si torna alla Sq2Mgr_SqlAnalyzer() la quale procede nel definire li da farsi. Nella fattispecie è quindi possibile compiere unioni o intersezioni di ricerche ed in generale compiere l'ordinamento dell'esito dell'operazione svolta.

Al termine di questa ulteriore fase si compie il rendering vero e proprio dell'output richiesto. Nel caso della selezione il risultato (una tabella temporanea di un certo numero di righe e colonne) viene quindi rappresentato in forma XML per mezzo della funzione Sql2Mgr_SelectXmlOutput(). In caso si debba tornare semplicemente un file di selezione eXtraWay ed esso non sia già stato generato dalla funzione precedentemente evocata, esso viene prodotto per mezzo della funzione Sql2Mgr_SelectSeleOutput().

A partire da:
13.0.2.*
Date
2007/03/01 09:13:17

Torna a Introduzione all'uso di SQL in eXtraWay


HighWay/eXtraWay Project - Frequently Asked Questions (Doxygen 1.6.1)