Fin qui abbiamo visto alcuni semplici costrutti del linguaggio โSQL, costrutti che ci consentono di effettuare tutte le operazioni di manipolazione del database. Essi sono piรน che sufficienti se il nostro scopo รจ quello di effettuare semplici interrogazioni, come anche se vogliamo effettuare alcune semplici modifiche alle nostre tabelle. Maggiore sarร la complessitร delle nostre esigenze, maggiore sarร lโesperienza di cui avremo bisogno per formulare le nostre query. Pur tuttavia, per quanto grande possa diventare nel tempo la nostra esperienza nella gestione di query, molto spesso, lo sviluppo di applicazioni di database potrebbe rivelarsi un compito molto arduo da affrontare con i soli costrutti del semplice SQL. Ci accorgeremo infatti che, sviluppare applicazioni vere e proprie per la gestione di database richiederร normalmente dei costrutti (quali possono essere quelli delle scelte condizionali o dei cicli iterativi per fare alcuni esempi) che sono del tutto simili a quelli che possiamo ritrovare nei linguaggi di programmazione piรน affermati come possono essere il C++, il Visual Basic, Java e via discorrendo. Avremo bisogno, alla fin fine, di veri e propri algoritmi di programmazione.
Le esigenze appena descritte, sono quelle che hanno portato alla realizzazione del linguaggio PL/SQL.
Oltre il semplice SQL: PL/SQL
Lโacronimo PL/SQL sta per Procedural Language SQL. Esso, come dice la sua definizione, รจ un vero e proprio linguaggio procedurale, una estensione dellโSQL pensata proprio per riuscire a superare i limiti imposti dallโutilizzo del semplice SQL. Come la maggior parte dei linguaggi procedurali, il PL/SQL mette a disposizione, oltre a tutti i costrutti dellโSQL, anche i controlli condizionali, i cicli iterativi, la gestione delle variabili e delle costanti, la gestione delle eccezioni, delle procedure, delle funzioni, ecc.
Un concetto centrale del PL/SQL รจ quello di blocco al cui interno รจ possibile combinare logicamente i vari comandi SQL nonchรฉ i vari costrutti "accessori" messi a disposizione dal PL/SQL. Un blocco potrร , quindi, contenere la dichiarazione di costanti e variabili, uno o piรน controlli condizionali allโoccorrenza per "indirizzare" il lavoro delle nostre query, uno o piรน cicli iterativi con i quali "scorrere" i record delle nostre tabelle, la gestione delle eccezioni, i cursori (che tratteremo specificatamente in seguito), chiamate ad altri blocchi, ecc. I blocchi a loro volta possono essere "contenuti" oltre che "contenitori", ovvero possono essere raggruppati allโinterno di packages (di solito, questo raggruppamento รจ un raggruppamento logico; si vedano, ad esempio, i packages predefiniti di Oracle come quelli per la manipolazione di files, le routines di input e output ecc.).
Insomma, gli utilizzatori professionali troveranno certamente nel PL/SQL un valido alleato per risparmiare tempo (e denaro) nello sviluppo di database complessi, potendo fare affidamento sugli innumerevoli strumenti messi a punto dal team di Oracle nel corso degli anni.