Está en la página 1de 12

PROGRAMANDO APLICACIONES en SQL embebido

Programando Aplicaciones
Qu conceptos cubre el tema de la clase de hoy:

En esta clase trataremos los mtodos para el desarrollo de aplicaciones usando bases de datos relacionales. Diferencias entre los tipos de aplicaciones y los pasos requeridos para codificar y construir un programa con SQL embebido esttico

Pro g ram an d o A p lic ac io n e s


Al finalizar el tem a ustedes estarn en condiciones de:
Discutir los conceptos de SQ L em bebido Em beber sentencias SQ L en un program a
In se rts/ U p d ate s/ D e l e te s O p e n / Cl o se / Fe tc h u san d o c u rso re s

Mtodos de programacin
* SQL embebido
* * * * - Esttico - Dinmico Call Level Interface (CLI)/ODBC Interfaces Java - JDBC - SQLJ DB2 Application Programming Interfaces (APIs) Otras interfaces, y herramientas ODBC para usuarios finales

Precompilar un programa SQ L em bebido

Mtodos de programacin:
SQL embebido permite a los desarrolladores codificar aplicaciones usando sentencias SQL en una sintaxis que es fcil de entender. Las sentencias SQL son "embebidas" en el cdigo fuente de la aplicacin. Un programa SQL embebido debe ser precompilado y luego compilado/ linkeado. CLI/ ODBC no requiere precompilacin. Hay un conjunto de llamadas a funcin hechas desde el programa.

Mtodos de programacin
Interfaces Java: El DBMS provee soporte para diferentes tipos de programas Java incluyendo applets, aplicaciones, servles... DB2 provee APIs nativas para los lenguajes de programacin soportados, que pueden ser llamadas directamente en una aplicacin. Otras interfaces y herramientas:Hay numerosas aplicaciones de usuarios finales y herramientas de terceros (third-party) para construir aplicaciones que se conectan con el DBMS.

SQ L EM BEB ID O B EB

SQL embebido

Se pueden embeber sentencias SQ L en aplicaciones permitindoles efectuar cualquier tarea soportada por SQ L, tales como recuperar o almacenar datos. Una aplicacin en la cual se embebe sentencias SQ L se llama pr ogr ama anfitrin. Una lenguaje de programacin en el cual se embebe sentencias SQ L se llama lenguaje anfitrin Las sentencias SQ L proveen la interfase con la base de datos, mientr as que el lenguaje anfitrin provee el soporte necesario r estante para que se ejecute la aplicacin.

SQLE MBE BIDO E STTICO

SQL EMBEBIDO Esttico y Dinmico

Sentencias SQLestticas son aquellas sentencias cuyo tipo y el objeto de la base de datos accedido por ella, son conocidos antes de correr la aplicacin. Lo nico desconocido son los valores de los datos que la sentencia est consultando o modificando. Las sentencias SQL estticas, embebidas en un programa anfitrin deben ser procesadas por el preprocesador de SQL antes de compilar el programa de aplicacin.

SQL embebido esttico (2)


El precompilador procesa todas las proposiciones SQL reemplazndolas por sentencias en lenguaje anfitrin que llaman al gestor de base de datos. El precompilador prepara para cada proposicin en el lenguaje original una seccin que encapsula un plan para ejecutar la proposicin.

Digresin
El DBMS m antiene estadsticas sobre las caractersticas fsicas de las tablas y sus nidices asociados. Esas caractersticas incluyen: nm ero de registros, nm eros de pginas y longitud prom edio de los registros. El optim izador, utiliza estas estadsticas cuando determ ina el cam ino de acceso a los datos.

SQL embebido esttico (3)


En tiempo de ejecucin, cuando el programa llama al gestor de base de datos para ejecutar una dada proposicin SQL, el gestor carga y ejecuta una de las secciones. El conjunto de todas las secciones que encapsulan las proposicin SQL en un dado programa se llama paquete. El precompilador SQL produce un paquete por cada programa que es procesado y almacena los paquetes en la base de datos.

SQL EMBEBIDO ESTTICO (4)


Lenguajes soportados:C/ C+ + Cobol Fortran

JAVA

Ventajas
Paquetes optimizados, disponibles en tiempo de ejecucin Persistencia de las sentencias SQL estticas

Desventajas
Debe saber qu SQL son necesarios Requiere precompilacin

SQLE MBE BIDO E STTICO (5)


SQL esttico puede ser codificado en C/ C++, COBOL, FORTRAN o JAVA. Dado que las sentencias SQL son conocidas al momento de la precompilacin el plan optimizado se contruye y almacena en la base de datos en tiempo de vinculacin. Estas sentencias SQL pueden ser corridas una vez o cientos de veces y no cambian Para construir un programa SQL esttico, las sentencias SQL deben ser conocidas antes de la precompilacin y el progarama DEBE SER precompilado.

SQL EMBEBIDO DINMICO


Sentencias SQL dinmicas son aquellas que construye y ejecuta la aplicacin en tiempo de ejecucin. Por ej. una aplicacin interactiva que requiere de los usuarios partes de una sentencia SQL tales como el nombre de una tabla o columnas a ser consultadas. La seleccin del plan de acceso optimizado se realiza al momento de ejecucin del programa. Una interfase de consulta interactiva (Centro de Mandatos DB2) es un buen ejemplo de tales aplicaciones.

SQL EMBEBIDO DINMICO (2)


SQL embebido dinmico puede ser codificados en C/ C++ , COBOL or FORTRAN. Las sentencias SQL sern preparadas cuando corre la aplicacin ya que el formato de las sentencias pudo no ser conocida cuando se escribi la aplicacin. Esto permite al programa ser mas flexible ya que las sentencias pueden ser construidas de acuerdo a las necesidades de la persona que est corriendo la aplicacin

SQLEMBEBIDO DINMICO (3)


Dado que las sentencias son preparadas durante el tiempo de ejecucin, hay un "costo" mayor para cada sentencia. Cuanto mas compleja sea la sentencia y mayor sea el nivel de optimizacin, mayor ser el costo (overhead). Adems las estadsticas usadas para construir el plan sern las estadsticas obtenidas cuando la aplicacin est corriendo.

Cundo se requiere SQL Dinmico


Es importante saber cundo se debe usar SQL dinmico

SQL embebido dinmico (4)


Lenguajes soportados:C/ C+ + Fortran COBOL

Se requiere SQL dinmico cuando: * No se conoce el nombre o tipo de la columna en la sentencia SQL * No se conoce el nmero de columnas que sern devueltas por la sentencia SQL * No se conoce el nombre de la tabla o vista en la sentencia SQL

Ventajas
Se usan las estadsticas actuales SQL mas flexible posible

Desventajas
El control de acceso debe realizarse al nivel de nivel de sentencia Mayor costo porque se prepara cada sentencia en tiempo de ejecucin

SQL esttico y dinmico


Ambos SQL esttico y dinmico pueden aceptar entradas desde la pantalla y usar estas entradas para afectar las sentencias SQL Con SQL dinmico se pueden armar las sentencias SQL en s. Con SQL esttico solo se pueden setear variables en la sentencia SQL SQL dinmico requiere que las sentencias sean precompiladas durante la ejecucion

SQL esttico y dinmico (2)


Esto permite al SQL dinmico usar las estadsticas disponibles en tiempo de ejecucin y usar las autorizaciones que ejecuta el programa Dado que las sentencias con SQL esttico son conocidas en tiempo de precompilacin, el plan optimizado para cada sentencia est disponible en tiempo de ejecucin.

SQL Dinmico Versus Esttico


D IC IN M O ET T O S IC

L d elaterm al ee esd in A alassen cias rm ten W E EE P >10" H R M -ID P aralasen cia-->p rep ten lan E tap jecu lan W E EE P >:V R N H R M -ID A _A F S lasvariab etea les an n fitrio as

Otros Mtodos de Programacin


..

Call L evel Interface -ODBC Interfaces Java - JDBC- SQL J DB2 APIs Otras interfaces, y herramientas ODBCpara usuarios finales

Call Level Interface


CLI es una interfase de programacin que pueden usar las aplicaciones en C y C++ para acceder a las bases de datos. CLI est basado en el estndar de Microsoft Open Database Conectivity (ODBC), el X/Open e ISO CLI estndar. CLI es tambin una forma de SQL dinmico en que las sentencias son preparadas en tiempo de ejecucin .

Call Level Interface


La nica gran diferencia entre SQL embebido dinmico y CLI es que CLI es un estndar abierto usado por muchos fabricantes de base de datos. CLI es usada por la mayora de los fabricantes de base de datos ya que es independiente de la plataforma y las aplica- ciones CLI pueden correr en DB2, Oracle, SQL Server...

Call Level Interface (2)


Ventajas
No se requiere Precompilacin/ Vinculacin Son usadas estadsticas actuales Puede almacenar y recuperar conjuntos de datos Cursores desplazables Aplicaciones facilmente portables

Interfases Java (JDBC y SQLJ)


Cada vez mas DBMS proveen soporte para diferentes tipos de programas Java incluyendo applets, aplicaciones, servles...Programas Java que acceden y manipulas bases de datos pueden usar los estndares Java Database Conectivity (JDBC) y SQL embebido para Java (SQLJ). El mayor beneficio de usar Java (sin tener en cuenta la interfase de DB) es su capacidad de write once, run anywhere, permitiendo al mismo programa Java ser distribuido sobre varias plataformas en un entorno eterogneo

Desventajas
Restringido a C/ C++ Vinculacin dinmica (Dynamic bindings) es mas lenta No puede usar caractersticas "embebidas" como SQL compuesto

Interfases Java (JDBC y SQLJ) (2)


Los programas JDBC, pasan SQL dinmico a un driver JDBC que viene con DB2. DB2 ejecuta las sentencias SQL y los resultados son devueltos al cdigo Java. Un programa JDBC no necesita precomp. ni vinculacin. Con el soporte SQLJ, se puede contruir y correr un programa SQLJ que contiene sentencias SQL embebido estticas. Es necesario precompilar y vincular. Un programa Java puede producir una poderosa aplicacin incluyendo construcciones estticas y dinmicas ya que SQLJ intercambia informacin de estado con JDBC

Interfases Java (JDBC y SQLJ) (3)


Ventajas
Incrementa la portabilidad para otros DBMS y plataformas. Fcil acceso a bases de datos a traves de Internet desde mltiples plataformas cliente. Desarrollo de aplicaciones orientadas a objetos.

Desventajas
Destrezas en programacin Java Puede ser mas lento dado que Java es intrprete.

DB2 APIs
DB2 APIs proveen acceso a funciones de DB2 desde lenguajes de programacin compilados e interpretados. las APIs se subdividen en base a las funciones que proveen: Entorno: Manipulan en entorno de DB2 creando/eliminando/catalogando bases de datos. Utilitarias:Proveen funciones administrativas y accede a funciones de DB2 tales como import, export, backup, restore, etc. Configuracin: Puesta a punto de la base de datos, configuraciones de administracin de DB

DB2 APIs
Precompilador: Para aquellos que quieren escribir su propio precompilador para un lenguaje de programacin no soportado. Las APIs proveen acceso a algunas funciones no disponibles en SQL embebido o a travs de CLI. Las APIs deben ser codificadas en programas C/C++, COBOL or FORTRAN y deben ser compiladas. Estas APIs son llamadas a funciones y son mas difciles de escribir que usar SQL embebido.

DB2 APIs (2)


Backup/ Recovery DB Control DB Manager Control DB Directory Mgt Node Directory Mgt Network Support Database Configuration DB Monitoring Operational Utilities Data Utilities General Appl. Programming Appl. Preparation Remote Server Utilities Table Space Mgt

Otras in te rfase s y h e rram ie n tas


Hay numerosas aplicaciones de usuarios finales y herramientas de terceros (third-party) para constr uir aplicaciones que se conectan con el DBMS. Muchas de estas herramientas y aplicaciones proveen sus propios "front end"con mtodos de accesos a los datos haciendo la interfase subyacente a la base de datos transparente a desarrolladores de aplicaciones y a usuarios finales. Esto puede proveer una alternativa mas simple que usar lenguajes de programacin de alto nivel.

Ventajas

Puede usar caracteristicas avanzadas de DB2 (Table Space Admin) No necesita precompilacin Utiliza lenguajes de programacin anfitrin

Desventajas
Requiere compilacin de leng anf. Puede ser mas dificil de implementar No facilmente portable No emite sentencias SQL

DB2CERT.PRZ

Otras interfases y herramientas ( 2)


Herramientas ODBC para usuarios finales tales como Lotus Ap. y Ms.Access asisten en la creacin de aplicaciones para efectuar tareas bsicas tales como consultar las DB, desarrollar reportes y analizar datos. Net.Data permite desarrollar aplicaciones de Web para Internet e intranet que acceden a datos de DB2, Oracle, Sybase, ODBC data source y otros. Provee una interfase intermedia entre el servidor Web y el cdigo cliente de la base de datos, permitiendo a los usuarios finales usar solo sus Web browsers o sus workstations..

Otras interfases y herramientas(3)


Ventajas
Rpido acceso a los datos usando una interfase simple o grfica Forma fcil de desarrollar aplicaciones relativamente simples Provee abstraccin sobre detalles de bajo nivel de acceso a datos.

Desventajas Inapropiado para aplicaciones complejas Puede no ser posible acceder a ciertas funciones y caractersticas propias del DBMS.

PROGRAMANDO APLICACIONES SQL embebido esttico

Embebiendo sentencias SQL en un pro grama

Cmo embeber una sentencia SQL Variables anfitrionas Seccin: DECLARE Devolucin de cdigos y mensajes Proposicin WHENEVER Recuperacin de datos SELECT INTO - VALUES INTO - Cursores Ejemplos Pasos de preparacin de programas

Cmo embeber una sentencia SQL


Todas las proposiciones SQL deben estar precedidas por EXEC SQL para permitir al precompilador encontrarlas.
Ej: EXEC SQL CONNECT TO mibase Ej: EXEC SQL SELECT AVG(sueldo) INTO :suel_prom FROM empleados WHERE dept = 'A001'

Variables anfitrionas
Las variables anfitrionas son usadas para pasar informacin/ datos entre la aplicacin y la base de datos. Una variable anfitriona debe ser definida en la seccin DECLARE del programa y debe ser precedida con un :(dos puntos) cuando es referenciada en el programa
Ej.: EXEC SQL BEGIN DECLARE SECTION; long cantidad, nro_factura char nom_cliente[20], direc[20] char fecha_nacim[11] EXEC SQL END DECLARE SECTION;

/ *integer */ / *char(19)*/ / * date */

Variables anfitrionas

Variables anfitrionas (2)


Las variables anfitrionas pueden ser de: entrada salida Ej. v.a. salida:
EXEC SQL INSERT INTO articulos (nuart, nombre_art, precio) VALUES (:codart, :nombre_art, :precio_art);

Una variable anfitriona debe ser un identificador simple sin ningn modificador del lenguaje anfitrin. Por ejemplo :x[5] :x.sueldo :x > sueldo no se pueden usar en una proposicin SQL. Si se puede puede usar en una proposicin SQL el operador de indireccin (tal como :*x) y slo si la variable anfitriona es declarada tipo puntero.

Seccin SQL: DECLARE


La seccin DECLARE de SQL debe contener una declaracin, por cada variable anfitriona de las proposiciones SQL del programa. La seccin DECLARE de SQL contiene declaraciones escritas en la sintaxis del lenguaje anfitrin. Cada tipo de dato SQL est asociado con un tipo de dato del lenguaje anfitrin que es usado para intercambiar valores entre el lenguaje anfitrin y la base de datos

Devo luci n de c digo s y mensajes rea de Co municaci n SQL


Cuando un programa de aplicacin corre, cada prop. SQL que se ejecuta devuelve un cdigo de estatus y posiblemente alguna informacin adicional. La informacin se devuelve en el rea de comunicacin SQL (SQLCA).

La SQLCA es una estructura declarada en el archivo header: sqlca.h. Hay dos mtodos para definir la SQLCA
Usar EXEC SQL INCLUDE SQLCA. Declarar una estructura llamada sqlca.

Siempre se controla la SQLCA despus de cada sentencia SQL

SQL Communications Area (2)


Nombre Tipo de elemento dato
sqlcaid sqlcabc sqlcode sqlerrml sqlerrmc sqlerrp sqlerrd sqlwarn sqlstate CHAR(8) INTEGER INTEGER SMALLINT VARCHAR(70) CHAR(8) Integer array Character array CHAR(5)

SQ L Co m m u n ic atio n s Are a ( 3)

Descripcin
Debe contener el 'SQLCA' Longitud de SQLCA (debe ser 136) Cdigo de error Longitud de sqlerrmc Uno o mas mensajes Mdulo de programa que caus el error 6 enteros conteniendo datos extra de diagnstico Indicadores de condicin Warning( de advertencia) Cdigo de error cross-platform(SQL92)

La SQ LCA es una estr uctura de datos definida por DB2 que se usa para la comunicacin entre la base de datos y el program a de aplicacin. La SQ LCA debe estar embebida en todos los program as SQ L embebidos.
Se p u ed e in clu ir la SQLCA u san d o la sin tax is EXEC SQL INCLU D E SQLCA .

La SQ LCA se carga con inform acin sobre cada sentencia SQ L y retorna a la aplicacin. La SQ LCA debe ser exam inada despus de cada sentencia para asegurarse que fue exitosa. Tipo de informacin contenida en el SQ LCA include:
E l SQ L code de la sen ten cia E l SQ L state(cdigo estan dar basado en ISO /AN SI SQ L9 2) D escripcin de error (si es aplicable)

DB2CERT.PRZ

Tratamiento d e e rro res de erro re s


W HENEVER.
Es expandido a un GO TO en la pre-compilacin Tiene 3 formas:SQL EXEC WHENEVER SQLERROR GO TO imprime_mensaje; SQL EXEC WHENEVER SQLWARNING CONTINUE; SQL EXEC WHENEVER NOT FOUND GO TO fin_de_lazo; NOT FOUND es el equvalente de SQLCODE 100

WHENEVER (2)
D B2 p r o ve e la cap acid ad d e hace r u n p r o ce sam ie n to co n d icio n al e n caso d e qu e o cu r r a u n e r r o r SQ L e n la ap licaci n . U san d o la sin t ax is EX EC SQ L W H EN EVER e l p r o gr am a p u e d e se r r am ificad o a o t r as p ar t e s d e l p r o gr am a b asad o e n :
q u e o c u r r a u n SQ LER R O R e j: SQ LC O D E n e g a t i v o q u e o c u r r a u n SQ L W a r n i n g e j: SQ LC O D E p o s i t i v o U n a c o n s u l t a n o d e v u e l v a d at o s o e n c u e n t r e e l f i n d e l a tab la e j: SQ LC O D E 1 0 0 La sin t ax is p u e d e se r EX EC SQ L W H EN EV ER .... C O N T I N U E o b i e n EX EC SQ L W H EN EV ER .... G O T O

Mtodos de recuperacin de datos


La mayora de los SQL usado en aplicaciones son SELECTS. Cuando se codifica una sentencia SELECT los datos deben ser almacenados en variables anfitrionas. En SQL ESTTICO hay tres mtodos para recuperar datos: Usando SELECT INTO Usando VALUES INTO Usando un cursor y la clusula FETCH INTO.

SELECT INTO
Debe tener una variable anfitriona en correspondencia con cada columna Debe retornar una sola fila. Condiciones de error:Warning flag cargada en la SQLCA si no se corresponden los tipos de datos entre columnas y variables anfitrionas SQLCODE +100/ SQLSTATE 02000 no encuentra ninguna fila. SQLCODE -811/ SQLSTATE 2100 ms de una fila Ej.:

SELECT INTO (2)


Cuando se usa la sentencia SELECT INTO se debe definir una variable anfitriona por cada columna que retorne la sentencia select. La sentencia SELECT INTO NO puede retornar mas de un registro.
EXEC SQL SELECT nombre, apellido, categoria, sueldo INTO :nombre, :apel, :cat,:sueldo FROM empleados WHERE dni=:dni

VAL S INTO UE
V LUESINTO devuelve REGISTROSESPECIA A LES, CONSTA NTESy V RIA LESA A B NFITRIONA S Tambin puede ser usado como una interfase para invocar UDF's Registros especiales
Nombre
CURRENT DATE CURRENT SERVER CURRENT TIME CURRENT TIMESTAMP CURRENT TIMEZONE USER CURRENT EXPLAIN MODE CURRENT EXPLAIN SNAPSHOT CURRENT FUNCTION PATH CURRENT QUERYOPTIMIZATION

Descripcn
Fecha en el DB Server 2 Alias de la base de datos activa Hora en el DB Server 2 Timestamp en el DB Server 2 Timezone difference en el DB Server de UTC 2 Userid activo Seteado por la opcin B IND EXPLAIN Seteado por la opcin B IND EXPLSNAP Seteado por la opcin B IND FUNCPATH Seteado por la opcin B IND QUERY OPT

VALUES INTO no se usa para recuperar datos de la base de datos, se usa para traer datos de los registros de DB2, constantes o UDFs .

VALUES INTO (2)

CURSORES
Las consultas embebidas son ms complejas que las operaciones de UPDATE, INSERT o DELETE porque necesitan devolver datos al programa de aplicacin y el nmero de filas que devuelve generalmente no es conocido de antemano. Para escribir un programa que recupera datos de una base de datos se necesita un mecanismo que especifique las filas a recuperar y luego las traiga al programa una a una. Este mecanismo se llama cursor.

Los registros especiales contienen informacin actual sobre la aplicacin y DB2. La sintaxis es:
VALUES nombre_registro INTO :var_anfitriona Ej:VALUES(CURRENT DATE, CURRENT TIME) INTO :hoy,:ahora La sintaxis para usar VALUES INTO para invocar una UDF es: VALUES (nombre_udf (param1,...,paramN)) El resultado, ser un valor escalar

CURSORES (2)
El uso de cursores requiere de 5 pasos:1. Declarar el cursor, especificando nombre y tipo. 2. Abrir el cursor, para formar el conjunto resultante 3. Traer el resultado una fila por vez. 4. (Optional) Update / Delete la fila actual 5. Cerrar el cursor

CURSORE (3) S
Para usar cursores se han definido un conjunto de pasos que debe ser seguidos

1. E cursor debe ser declarado. l


Se debe especificar el nobre y tipo del cursor y se lo asocia con una consulta en particular. Sintaxis: DECLARE nombre_cursor CURSOR FOR consulta Ej.: EXEC SQL DECLAREcr1 CURSOR FOR SELECT nucli, nuart, cant FROMpedido WHERE cant > :cantidad ORDER BYnuart;

Los cursores son unidireccionales (forw ard only) Hay tres tipos de cursores:
1. Read-only 2. Updateable - se usa la clusula FOR UPDATE. 3. Ambiguous - No se puede determinar el tipo de cursor por la sentencia SELECT o DECLARE que est siendo usada.

CURSORES (4)
2. El cursor debe ser abierto antes que
pueda ser usado para recuperar datos.
Abriendo el cursor se construye el conjunto resultante de las sentencia declarada en el paso 1. Esto posiciona el cursor antes de la primera fila del conjunto resultante.

CURSORES (5)
4. Los datos pueden ser actualizados usando las sentencias delete/ update.
Update o delete modificar o eliminar las fila donde el cursor est posicionado.

3. Los datos pueden ser luego traidos de a una fila por vez.
A medida que se trae cada fila, se debe "chequear" el SQLCODE para ver el resultado final del conjunto resultante (SQL code 100).

5. Una vez que el cursor ya no es requerido debe ser cerrado para liberar cualquier bloqueo obtenido.
El nombre del cursor debe ser especificado en la sentencia CLOSE CURSOR.

TIPOS DECURSORES (6)


Read-only
Se especifica usando FOR RE ONLY o AD FOR FETCH ONL Y

Updateable
Se especifica usando FOR UPDATE

Ambiguous
Sin ninguna clusula FOR

Clusula WITH HOLD


Mantendr la posicin del cursor a travs de un COMMIT.

Un cursor puede ser read-only, updateable, o ambiguous basado segn como el cursor se declara y se usa. Un cursor de slo-lectura se usa slo para seleccionar los datos. Un cursor actualizable se declara en la clusula FOR UPDATE. Puede usarse para acceder una sola vista o tabla. Para un cursor ambiguo el tipo no puede determinarse de la declaracin o la sentencia.. Un cursor tambin puede definirse WITH HOLD: un cursor definido WITH HOLD mantendr su posicin durante las transacciones y no se cerrar automticamente por un COMMIT. Un rollback cerrar un cursor definido WITH HOLD pero un , COMMIT solo mueve el cursor despus de la fila actual.

TIPOS DECURSORES (7)

10

CURSORES (8)
Sintaxis de las sentencias DECLARE, OPEN FETCH YCLOSE Ejemplos:
EXEC SQL OPEN cr1; EXEC SQL FETCH cr1 INTO :cliente, :arti, :cantidad; EXEC SQL CLOSE cr1; EXEC SQL UPDATE cliente SET nombre-cliente = 'Adriana Caniglia', WHERE CURRENT OF cr2;

Ejemplos SQL esttico y dinmico


ejemplos de cursores el prog de cursor despus de la precomp .c ejemplo de prog SQL emb. esttico Whenever sql emb. dinmico as400

SQL embedido: Pasos


..

P aso s d e p re p arac i n p ara c o rre r p ro g ram as

Tareas
Conectar con la base de datos

miprog.exe

Precompilar cdigo fuente Compilar y linkear

SQ L e m b e b i d o
..

Vincular a la base de datos Ejecutar cdigo objeto

Pasos de preparacin para correr programas


Para estar en condiciones de correr un programa SQL embebido, se deben llevar a cabo los siguientes pasos: 1. Connectar a la base de datos. (Todos los objetos accedidos en el programa deben estar definidos en la bd) 2. Precompilar el cdigo fuente: prep miprog.ext P roducir un archivo fuente modificado y opcionalmente un archivo bind.
P defecto P construye los planes en la DB or REP

PRECOMPILE
El comando PRECOMPILE procesa un archivo fuente de un programa de aplicacin. Produce un archivo fuente modificado, conteniendo llamadas al lenguaje principal equivalentes a las proposiciones SQL y, por defecto, crea un paquete en la base de datos. Las extensiones de los archivos en lenguaje anfitrin C para el precompilador son:
.sqc .c entrada-fuente salida-fuente modificado

Si el programa se enva a otros para correr, DEBE especificarse el archivo bind. 3. Compilar y linkear el archivo fuente modificado. 4. Vincular el archivo bind a la base de datos: 1. Si el programa contena SQL esttico Y 2. Si fue creado un archivo bind en el paso 2 5. Ahora el programa est listo para ser corrido.

11

PRECOMPILE (2)
El paquete puede ser almacenado en un archivo bind o directamente en la base de datos. Crear un archivo bind y vincularlo separadamente se conoce como deferred binding o vinculacin diferida. Esta vinculacin requiere un proceso de dos pasos:
Crear un archivo bind (que contiene el paquete) Vincular el paquete a la base de datos o sea vincular el archivo de vinculaciones generado por el precompilador, mediante el mandato BIND.

PRECOMPILE(3) PRE COMPIL E


Veamos un ejemplo de vinculacin diferida: CONNECT TO mibase PRECOMPILE miaplic.sqc B INDFILE CONNECT RESET Esta opcin se usa para generar un archivo de salida que contiene el paquete de informacin del mdulo fuente. Usando esta opcin el paquete es almacenado en un archivo llamado miaplic.bnd.Despus el paquete debe ser vinculado usando el comando BIND para almacenar el paquete en la base de datos.

Query Compilation
SQL Query

Compilacin de consultas

SQL Compiler
Access Plan

Parse Query Check Semantics Rewrite Query Optimise Access Plan Generate Code Executable Plan db2expln Query Graph Model
Desarrollador a de cdigo de un prog. SQLE statico BIND E sttico Usuario final ingresa parametros para query E jecuta consultas en el servidor DB

comando BIND

E jecucin de paquetes

Desarrolladores de cdigo consulta de progr. SQL

Usuarios finales ingresan SQL

Prep Dinmico y BIND

Ejecucin dinmica de en el servidor de DBr

Execute Plan Visual Explain

PREP ARE

Ejecuta

Pasos de preparacin para correr programas


P R E C O M P I L A D O R

Ejecutables y paquetes
miaplic.sqc

miaplic.bnd archivo bind

miaplic.sqc archivo fuente

miaplic.c archivo fuente modificado

C O M P I L A D O R

B I N D E R

DS AE TR AV B I AC SE ES

Tablas Indices
Paquetes

PREP
CT miaplic miaplic.c CT Consistency Token

miaplic.bnd

miaplic.o Archivo objeto

L I N K E R

COMPILE & LINK


miaplic archivo ejecutable
ejecutable miaplic CT
no est? -805 no match? -818

BIND

paquete miaplic CT

DB2 archivos Include libreria de arch. DB2

DB2CERT.PRZ

12

También podría gustarte