06.09.2014 Views

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

© FUOC • 71Z799014MO 51 El lenguaje SQL<br />

4. Sublenguajes especializados<br />

Muchas veces querremos acce<strong>de</strong>r a la base <strong>de</strong> <strong>datos</strong> <strong>de</strong>s<strong>de</strong> una aplicación hecha<br />

en un lenguaje <strong>de</strong> programación cualquiera. Para utilizar el SQL <strong>de</strong>s<strong>de</strong> un<br />

lenguaje <strong>de</strong> programación, po<strong>de</strong>mos utilizar el SQL hospedado, y para trabajar<br />

con éste necesitamos un precompilador que separe las sentencias <strong>de</strong>l lenguaje<br />

<strong>de</strong> programación <strong>de</strong> las <strong>de</strong>l lenguaje <strong>de</strong> bases <strong>de</strong> <strong>datos</strong>. Una alternativa<br />

muy interesante a esta forma <strong>de</strong> trabajar son las rutinas SQL/CLI.<br />

El objetivo <strong>de</strong> este apartado no es explicar con <strong>de</strong>talle ni el SQL hospedado ni,<br />

aún menos, las rutinas SQL/CLI. Sólo introduciremos las i<strong>de</strong>as básicas <strong>de</strong>l funcionamiento<br />

<strong>de</strong> ambos.<br />

4.1. SQL hospedado<br />

Para crear y manipular una base <strong>de</strong> <strong>datos</strong> relacional necesitamos SQL. A<strong>de</strong>más,<br />

si la tarea que queremos hacer requiere el po<strong>de</strong>r <strong>de</strong> procesamiento <strong>de</strong> un lenguaje<br />

<strong>de</strong> programación como Java, C, Cobol, Fortran, Pascal, etc., po<strong>de</strong>mos<br />

utilizar el SQL hospedado en el lenguaje <strong>de</strong> programación elegido. De este modo,<br />

po<strong>de</strong>mos utilizar las sentencias <strong>de</strong>l SQL <strong>de</strong>ntro <strong>de</strong> nuestras aplicaciones,<br />

poniendo siempre <strong>de</strong>lante la palabra reservada EXEC SQL*.<br />

Para po<strong>de</strong>r compilar la mezcla <strong>de</strong> llamadas <strong>de</strong> SQL y sentencias <strong>de</strong> programación,<br />

antes tenemos que utilizar un precompilador. Un precompilador es una<br />

herramienta que separa las sentencias <strong>de</strong>l SQL y las sentencias <strong>de</strong> programación.<br />

Allá don<strong>de</strong> en el programa fuente haya una sentencia <strong>de</strong> acceso a la base<br />

<strong>de</strong> <strong>datos</strong>, se <strong>de</strong>be insertar una llamada a la interfaz <strong>de</strong>l SGBD. El programa fuente<br />

resultante <strong>de</strong> la precompilación ya está únicamente en el lenguaje <strong>de</strong> programación,<br />

preparado para ser compilado, montado y ejecutado.<br />

* Pue<strong>de</strong> haber pequeñas diferencias<br />

<strong>de</strong>pendiendo <strong>de</strong>l lenguaje<br />

<strong>de</strong> programación concreto<br />

que estemos consi<strong>de</strong>rando.<br />

En la figura que encontraréis en la página siguiente podéis observar este<br />

funcionamiento.<br />

Todas las sentencias <strong>de</strong> <strong>de</strong>finición, manipulación y control que hemos visto<br />

para el SQL se pue<strong>de</strong>n utilizar en el SQL hospedado, pero precedidas <strong>de</strong> la cláusula<br />

EXEC SQL. Sólo habrá una excepción: cuando el resultado <strong>de</strong> una sentencia<br />

SQL obtenga más <strong>de</strong> una fila o haga referencia también a más <strong>de</strong> una,<br />

<strong>de</strong>beremos trabajar con el concepto <strong>de</strong> cursor.<br />

Un cursor se tiene que haber <strong>de</strong>clarado antes <strong>de</strong> su utilización (EXEC SQL<br />

DECLARE nombre_cursor CURSOR FOR). Para utilizarlo, se <strong>de</strong>be abrir (EXEC<br />

SQL OPEN nombre_cursor), ir tomando los <strong>datos</strong> uno a uno, tratarlos

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!