|
|
Microsoft SQL ServerLEZIONI - INTERAZIONE CON IL FRAMWORK .NET Grazie al Framework .NET è stato introdotto il nuovo concetto di Assembly e reference. In pratica, adesso possiamo creare un semplice contenitore di funzioni (dll) e farla funzionare da tutti i programmi che sfruttano il Framework. Visto che anche SQL Server fa parte di questi programmi, allo stesso modo possiamo creare un assembly in .NET, inserirlo in SQL Server e da questo eseguirlo tramite un comando T-SQL. Figura 1. Inclusione di una DLL in SQL Server 2005 Creazione del progetto .NETPer creare il progetto utilizziamo Visual Studio 2005. Creiamo un nuovo progetto di tipo libreria di classi, lo chiamiamo DATA_FSX, ovvero funzioni per i dati e lo salviamo. A questo punto dobbiamo inserire una nuova classe che chiamiamo Motore. Listato 1. Classe Motore Imports System Figura 2. Risultato classe Motore Abbiamo messo nella classe una serie di oggetti che ci consentono di eseguire operazioni sul database. Poi abbiamo creato in overloads, ovvero con lo stesso nome ma parametri di tipo diverso, una routine che invia i messaggi o i dati a SQL. La prima funzione Listato 2. Registrazione assembly CREATE ASSEMBLY [DATA_FSX] Questa è il metodo standard per poter lavorare con SQLCLR, ovvero il linguaggio che fa da tramite tra .NET e SQL server. Funzioni avanzateIl secondo passo che dobbiamo fare è quello di interagire con i dati. Nella seconda funzione dobbiamo eseguire una SELECT e restituire dei dati particoli, filtrati. Quindi la funzione dovrà anche ricevere un parametro di input. Nota: stiamo usando un assembly di tipo Shared, quindi alcune operazioni quali variabili locali o dispersione di dati, non sono consentite. In secondo luogo, ogni volta che modifichiamo il contenuto dell'assembly (dll), dobbiamo ricompilare, cancellare riferimenti (stored procedure) e sovrascrivere la vecchia registrazione assembly con una nuova. Questo perchè l'assembly è stato inglobato da SQL Server. Per prima cosa modifichiamo la classe motore con questa nuova funzione. Listato 3. Funzione per ordini 'Ricerca ordini per ID cliente Adesso dobbiamo registrare nuovamente tutto, questa volta però, quando andiamo a registrare la stored procedure, SQL ci fornirà un messaggio di errore perchè necessita di una variabile per passare il valore di cliente alla funzione VB. Nel listato 4. Listato 4. Dichiarazione assembly con variabile CREATE PROCEDURE Seleziona_Ordini SQLCLR consente di rendere il database uno strumento completo, in grado di effettuare anche operazioni complesse, non sempre eseguibili con il solo motore di database. Dobbiamo dire che in prima esecuzione, gli assembly sono più lenti di una normale query, ma una volta cachati si eguagliano. (Fonte: Html.it)
|