SQL incorporato

La prima tecnica per l'invio di istruzioni SQL a DBMS è SQL incorporato. Poiché SQL non utilizza variabili e dichiarazioni di controllo del flusso, viene spesso utilizzato come un sottolinguaggio per database che può essere aggiunto a un programma scritto in un linguaggio di programmazione convenzionale, come il C o il COBOL. Questa è l'idea centrale di SQL incorporato: inserire le istruzioni SQL in un programma scritto in un linguaggio di programmazione ospite. Brevemente, vengono usate le tecniche seguenti per incorporare istruzioni SQL in un linguaggio host:

  • Le istruzioni SQL incorporate vengono elaborate da uno speciale precompilatore SQL. Tutte le istruzioni SQL iniziano con un introduttore e terminano con un terminatore, che segnalano l'istruzione SQL al precompilatore. L'introduttore e il terminatore variano a seconda della lingua ospite. Ad esempio, l'introduttore è "EXEC SQL" in C e "&SQL(" in MUMPS, mentre il terminatore è un punto e virgola (;) in C e una parentesi destra in MUMPS.

  • Le variabili del programma applicativo, chiamate variabili host, possono essere utilizzate nelle istruzioni SQL incorporate ovunque siano consentite le costanti. Questi dati possono essere usati nell'input per personalizzare un'istruzione SQL in una determinata situazione e sull'output per ricevere i risultati di una query.

  • Le query che restituiscono una singola riga di dati sono gestite con un'istruzione SELECT singleton; questa istruzione specifica sia la query che le variabili host in cui restituire i dati.

  • Le query che restituiscono più righe di dati vengono gestite con i cursori. Un cursore tiene traccia della riga corrente all'interno di un set di risultati. L'istruzione DECLARE CURSOR definisce la query, l'istruzione OPEN inizia l'elaborazione della query, l'istruzione FETCH recupera le righe successive di dati e l'istruzione CLOSE termina l'elaborazione della query.

  • Quando il cursore è aperto, le istruzioni di aggiornamento e cancellazione posizionate possono essere utilizzate per aggiornare o eliminare la riga attualmente selezionata dal cursore.

Questa sezione contiene i seguenti argomenti: