Le Functions sono segmenti di codice, preimpostabile e riutilizzabile, costituiti dalla combinazione di più istruzioni T-SQL. In particolare, consentono di centralizzare la definizione di alcune operazioni custom, da richiamare in altri oggetti del Package, quali:
✓ la parsificazione e la formattazione di stringhe;
✓ la trasformazione e la normalizzazione di specifici record;
✓ il controllo della coerenza e dell'integrità dei dati;
✓ l'applicazione di formule di calcolo anche complesse.
Ogni Function può ricevere uno o più valori di input, detti parametri, ma restituire un solo valore in output, referenziato dallo specifico parametro @ReturnValue.
Il parametro @ReturnValue è preconfigurato dal sistema e non modificabile da UI. |
Gli elementi definitori di una Function sono impostabili nei tab:
✓ General
✓ Definition
✓ Dynamic Properties
Il tab General permette di impostare denominazione della Function ed eventuale descrizione.
Il tab Definition è costituito da:
✓ una griglia in cui specificare i parametri in input ed il loro formato;
✓ un query editor, dove istanziare, mediante istruzioni T-SQL, la funzione stessa.
La griglia che espone la lista dei parametri in input viene compilata manualmente ed è possibile aggiungere e/o cancellare record a piacere. Ogni record di tale tabella è caratterizzato dai seguenti campi.
Campo |
Descrizione |
---|---|
Name |
Nome del parametro in input. Deve sempre iniziare con il carattere "@". |
DataType |
Il formato del dato (es. VarChar, Int, Decimal, ecc...) |
DataSize |
La lunghezza del dato in base al DataType impostato. Per esempio, nel caso di DataType Decimal, indica il numero massimo di cifre intere. |
Scale |
Nel caso particolare di DataType Decimal, indica il numero di cifre decimali visualizzate. |
Default |
Valore specifico che viene utilizzato in caso manchi il parametro in input. |
Description |
Eventuale descrizione del parametro, per integrare la documentazione relativa al Package. |
Nel query editor è possibile scrivere le istruzioni T-SQL desiderate, utilizzando i parametri di input (referenziati con il carattere "@"). Nel tab Home del Ribbon sono presenti anche alcune funzionalità di scrittura, quali copia e incolla (gruppo Clipboard), ed il tasto Check per il controllo della sintassi (gruppo Query).
Il risultato finale di tale codice T-SQL deve essere un unico valore. Esso viene salvato automaticamente, nel parametro di output @ReturnValue.
Le Functions possono essere incapsulate, richiamandosi a vicenda nel proprio query editor. |
ESEMPIO: DEFINIZIONE ED UTILIZZO DI UNA FUNCTIONS Supponiamo di avere 4 tabelle con i dati dei clienti di 4 aziende (Customer1, Customer2, Customer3 e Customer4). In ciascuna di queste tabelle esistono un campo LastName ed un campo Name. Le aziende vorrebbero che le loro tabelle Customer mostrassero un unico campo CustomerName contenente nome e cognome del cliente. Per ottenere tale risultato è possibile definire una Function da richiamare all'interno di opportuni Query Engine nel seguente modo: ✓Inizializzare una Function, denominata CustName, con parametri in input @CustomerName e @CustomerLastName; ✓Definire la Function, mediante la seguente istruzione T-SQL @CustomerName + ' ' + @CustomerLastName ✓Richiamare la Function all'interno di un Query Engine, mediante la seguente query SELECT c.*, CustomerName = CustName(c.Name,c.LastName) FROM Customer c |
Le Functions possono essere utilizzate solo negli oggetti del Package che lavorano su dati ad esso interni, quali Rule Engine e Query Engine. |
Il tab Dynamic Properties consente la definizione dinamica delle proprietà che definiscono la Function. In particolare, è possibile impostare:
✓ DataAuditability, per l'abilitazione della tracciabilità;
✓ DocumentationAuditability, per l'abilitazione della documentazione automatica;
✓ Expression, per la definizione dell'espressione che definisce la Function;
✓ ReturnValue, il valore di output.