Documente Academic
Documente Profesional
Documente Cultură
Objetivos
Contenidos
El SQL directo (o interactivo) est pensado para usarse desde una estacin
de trabajo. En l, las instrucciones se ejecutan directamente desde el terminal
y el resultado de las consultas se visualiza en el monitor de la estacin.
El SQL embebido est pensado para ser utilizado intercalando sus
instrucciones en el cdigo de un programa escrito en un lenguaje de
programacin al que se denomina lenguaje husped(FORTRAN, COBOL, C,
etc.). Estas instrucciones se ejecutan cuando se ejecuta el programa de
acuerdo a su lgica interna. En este contexto, el intercambio de informacin
con el SGBD se realiza a travs de variables del lenguaje, a las que se
denomina variables huspedes; por ejemplo, el resultado de las consultas es
asignado a variables del programa declaradas con ese fin.
Programa
Declaracin de variables
Declaracin de variables huspedes para acceso a la base de
datos
Fin declaracin de variables huspedes para acceso a la base
de datos
Fin declaracin de variables
Desde que el cursor es activado (apertura del cursor) siempre tiene una
posicin (posicin actual) dentro del conjunto ordenado de tuplas. Esta
posicin puede ser: delante de una tupla, en una tupla, y detrs de una tupla.
Esta posicin actual va a ser relevante para las instrucciones de manipulacin
de la base de datos basadas en el uso de cursores. A continuacin se presentan
cada una de ellas.
La lista de variables debe contener una variable husped por cada atributo
de la relacin asociada al cursor, estas variables recibirn los valores de la
tupla seleccionada.
Para realizar este control se utiliza el rea de comunicacin del SQL (en
ingls SQLCA). La SQLCA consiste en un conjunto de variables que
almacenan informacin sobre el estado (y los errores, si se producen) de la
ltima instruccin que el programa ejecut sobre la base de datos.
Para poder hacer uso de estas variables hay que declararla de la siguiente
manera:
EXEC SQL INCLUDE SQLCA;
La inclusin de esta declaracin implica la aparicin de una nueva variable
estructurada denominada sqlca.La declaracin de esta variable es la siguiente:
typedef struct {
char sqlcaid[8];
long sqlcabc;
long sqlcode;
struct {
short sqlerrml;
char sqlerrmc[70]; } sqlerrm;
char sqlerrp[8];
long sqlerrd[6];
struct {
char sqlwarn0;
char sqlwarn1;
char sqlwarn2;
char sqlwarn3;
char sqlwarn4;
char sqlwarn5;
char sqlwarn6;
char sqlwarn7; } sqlwarn;
char sqlext[8]; } IISQLCA;
extern IISQLCA sqlca;
El uso de cada uno de los campos de la variable sqlca es el siguiente:
4. Programa ejemplo
# include <stdio.h>
# include <string.h>
exec sql include sqlca;
exec sql begin declare section;
struct pro_ {
char cod_pro[4];
char nombre[41];
int telefono;
char cod_dep[6];
} pro;
char cd[6];
exec sql end declare section;
main(){
exec sql declare c_pro cursor for
select cod_pro, nombre, telefono,
cod_dep
from Profesor
where cod_dep = :cd;
printf("Dame el cdigo del departamento ");
scanf("%5s", cd);
printf("%-4s %-40s %-10s", "Cdigo", "Nombre",
"Telfono");
printf("\n");
printf("--------------------------------------
---------------\n");
exec sql connect apb_emb;
exec sql open c_pro;
exec sql fetch c_pro into :pro;
while ( sqlca.sqlcode == 0 )
{
printf("%-4s %-40.40s %-5d",
pro.cod_pro, pro.nombre, pro.telefono);
printf("\n");
exec sql fetch c_pro into :pro;
}
exec sql close c_pro;
exec sql disconnect;
}
6. Ejercicios propuestos