Documentos de Académico
Documentos de Profesional
Documentos de Cultura
________
CONCEPTOS.
Conceptos ................................................ 1
Tablas ................................................... 1
Tipos de datos que puede contener una columna de una tabla 2
Indices .................................................. 2
Vistas ................................................... 2
Racf (Resource Access Control Facility) .................. 3
Passwords de archivos Vsam .............................. 3
Autorizacion ............................................. 3
Concurrencia ............................................. 3
Recuperacion de datos .................................... 3
- Unidad de recuperacion ............................... 3
Ayudas a la programacion ................................. 4
- Spufi ................................................ 4
- Paneles para preparacion de programas ................ 4
- Paneles para mantenimiento de planes ................. 4
- DCLGEN (Declarations Generator) ...................... 4
- Online Help .......................................... 5
INSTRUCCIONES S.Q.L.
VISTAS.
Concepto ................................................. 22
Proceso de una vista ..................................... 23
Subquery ................................................. 24
Formas de incluir una subquery en una clausula where o
having ................................................... 24
- Inmediatamente despues de un operador de comparacion.. 24
- Despues de un operador de comparacion seguido de all
o any .................................................. 25
- Despues de In, para indicar que el valor de la expre-
sion debe estar entre los valores devueltos por la sub-
query .................................................. 25
- Despues de Exists, verificacion de que puede ser en-
contrada una fila con la condicion de la subquery ...... 26
Subquery correlativa ..................................... 26
Otros ejemplos ........................................... 26
- Con una SELECT ....................................... 26
- Con una UPDATE ....................................... 27
- Con una DELETE ....................................... 27
SPUFI.
PANELES.
APENDICE I.
PLANIFICACION.
3/58
DISEÑO DE BASES DE DATOS.
Introduccion ............................................. 51
INTEGRIDAD DE DATOS.
Concurrencia ............................................. 55
Trabajo realizado por el DB2 para el SQL ................. 55
Dise¤o fisico de bases de datos .......................... 56
Seleccion de indices ..................................... 60
4/58
CONCEPTOS
_________
TABLAS
______
Los datos en las bases de datos DB2 estan disponibles para un programa
de aplicacion como un conjunto de tablas. Las tablas son estructuras de
datos de dos dimensiones, compuestas de FILAS y COLUMNAS.
. Datos numericos:
SMALLINT - Enteros binarios de media palabra
INTEGER - Enteros binarios de una palabra
DECIMAL - Numeros decimales
FLOAT - Numeros de coma flotante
INDICES
_______
Estan basados en los valores de los datos de una o mas columnas, y son
mantenidos automaticamente por el DB2 cuando se produce un cambio en
los datos contenidos en la tabla. Un programa no se refiere a los indi-
ces, sino que el DB2 selecciona el indice para acceder a los datos que
el programa requiere.
El DB2 nunca usa como indice una columna que va a ser actualizada, o
una columna que esta siendo comparada con otra de la misma fila.
5/58
VISTAS
______
AUTORIZACION
____________
CONCURRENCIA
____________
Ningun programa podra acceder a los datos que hayan sido cambiados por
otro programa, pero que todavia no esten en la base.
6/58
RECUPERACION DE DATOS
_____________________
Unidad de recuperacion
______________________
Ejemplo:
Si ocurre una accion y otra no, se dice que la base de datos ha perdido
su integridad o consistencia. Para lograr que los datos recuperen el
valor que tenian antes de comenzar la unidad de recuperacion, se usa la
opcion ROLLBACK para el comando SYNCPOINT.
AYUDAS A LA PROGRAMACION
________________________
Spufi:
_____ Permite usar el SQL sin tener que codificar un programa completo
mediante instrucciones que pueden ser ejecutadas y mostradas en
la terminal.
7/58
. Producir instrucciones SQL DECLARE TABLE
ONLINE HELP:
___________ Proporciona ayuda durante la ejecucion del spufi.
+-----------------------------------------------+
| APLICACION |
| |
| 1 - Area de datos <-----------+ |
| 2 - SQLCA | |
| | |
| +--> 3 - Entrada al programa | |
| | 4 - Tratar mensaje de entrada | |
| | 5 - Proceso | |
| | 6 - Instrucciones SQL ---+ | |
| | 7 - Mensaje de salida | | |
| | +-- 8 - Terminacion | | |
| | | | | |
+---|--|----------------------------|----|------+
| | | |
| | v |
+--------|--------------+ +-----------+ -----> +-----+
| ENTRY | CICS/OS/VS | | CICS/OS/VS| | DB2 |
| v | +-----------+ <----- +-----+
| EXIT |
+-----------------------+
2- Cada programa que accede a datos DB2 debe tener un area de datos
llamada SQLCA (SQL Comunication Area), usada por el DB2 para decir
al programa si la ejecucion de la ultima instruccion SQL ha sido
correcta, mediante un codigo de retorno , que se puede examinar en
los campos SQLCODE y SQLWARN0 (deben ser cero y blanco).
- Isolation level:
Se puede hacer lock del espacio de tabla entero que contiene la ta-
bla que se quiere proteger mediante una instruccion lock table:
EXEC SQL
LOCK TABLE nombre_de_tabla
IN SHARE MODE
END-EXEC
EXEC SQL
LOCK TABLE nombre_de_tabla
IN EXCLUSIVE MODE
END-EXEC
. ALLOCATE
9/58
indica que se quieren adquirir los locks cuando se aloca
el plan de aplicacion
. DEALLOCATE
indica que se quieren retener los locks hasta que termine
el programa
- Explain pa h selection
. YES
se pide al DB2 informacion acerca de las decisiones que
esta tomando en el establecimiento de caminos de acceso
a los datos
. NO
INSTRUCCIONES S.Q.L.
____________________
INSTRUCCIONES BASICAS
______________________
CLAUSULA WHERE
______________
El DB2 primero evalua las clausulas NOT, luego AND y por ultimo OR. Se
puede cambiar el orden de evaluacion por medio de parentesis, que son
examinados primero.
Ejemplos:
10/58
. WHERE NOT WORKDEPT = 'C01'
. WHERE EMPNO = :EMPID
. WHERE JOBCODE + EDUCLVL > 70
. WHERE SEX = 'V' AND (DEPT = 'C1' OR DEPT = 'C2')
SELECT INTO
___________
Funcion
_______
Formato
_______
EXEC SQL
SELECT nombres_de_las_columnas que nos interesan
INTO nombres_de_vbles usadas para contener los datos recuperados
FROM nombre_de_la_tabla o vista que contiene los datos
WHERE condicion_de_busqueda
END-EXEC
UPDATE
______
Funcion
_______
Formato
_______
EXEC SQL
UPDATE nombre_de_la_tabla o vista
SET columnas que se quieren actualizar = nuevo valor
11/58
WHERE condicion_de_busqueda
END-EXEC
DELETE
______
Funcion
_______
Formato
_______
EXEC SQL
DELETE
FROM nombre_de_la_tabla o vista
WHERE condicion_de_busqueda
END-EXEC
INSERT
______
Funcion
_______
Formato
_______
EXEC SQL
INSERT
INTO nombre_de_la_tabla o vista (nombres de columnas)
VALUES (valor_de_cada_columna especificada en la clausula INTO)
END-EXEC
12/58
INSERCION A LA VEZ DE VARIAS FILAS DE UNA TABLA EN OTRA TABLA
_____________________________________________________________
Ejemplo:
Se crea una tabla llamada EMPTIME con las columnas EMPNUMBER,
PROYNUMBER, STARTDATE y ENDDATE, y se usa la INSERT para llenarla.
EXEC SQL
INSERT INTO USERA.EMPTIME
(EMPNUMBER, PROYNUMBER, STARTDATE, ENDDATE)
SELECT EMPNO, PROYNO, COMIENZO, FIN
FROM DSN.EMP
END-EXEC
En una SELECT embebida en una INSERT no se puede poner UNION ni ORDER BY.
El DB2 construye una 'tabla de resultados' para guardar todas las filas
recuperadas al ejecutar una instruccion SELECT, y utiliza el cursor para
hacerlas disponibles al programa. Un cursor identifica la fila actual
de la tabla de resultados, que el programa puede recuperar secuencial-
mente hasta que alcanza el fin de los datos ( SQLCODE=100, NOT FOUND).
Un programa puede utilizar varios cursores, para cada uno de ellos se
utilizan las siguientes instrucciones:
DECLARE CURSOR
______________
Funcion
_______
Formato
_______
EXEC SQL
DECLARE nombre_del_cursor
CURSOR FOR SELECT columna 1, columna 2 .....
FROM nombre_de_la_tabla
WHERE columna 1 = condicion_de_busqueda
FOR UPDATE OF columna 2 ...(columnas de cada fila que se
quieren actualizar)
END-EXEC
13/58
La instruccion DECLARE CURSOR nombra un cursor. La instruccion SELECT
define un conjunto de filas, que formaran la tabla de resultados.
Cuando DB2 evalua una instruccion SELECT, puede ocurrir que varias filas
satisfagan la condicion de busqueda, y que algunas de ellas esten dupli-
dadas. Para especificar que no se desean, se codificara:
SELECT DISTINCT columna 1, columna 2, .....
OPEN
____
Funcion
_______
Formato
_______
EXEC SQL
OPEN nombre_del_cursor
END-EXEC
FETCH
_____
Funcion
_______
Formato
_______
EXEC SQL
FETCH nombre_del_cursor
INTO variable 1, variable 2 ....
END-EXEC
Funcion
_______
Formato
_______
EXEC SQL
WHENEVER NOT FOUND GO TO direccion_simbolica
END-EXEC
UPDATE
______
Funcion
_______
Formato
_______
EXEC SQL
UPDATE nombre_de_la_tabla
SET columna 1 = valor , columna 2 = valor ....
WHERE CURRENT OF nombre_del_cursor
END-EXEC
Cada columna que se quiere actualizar debe haber sido nombrada previa-
mente en la clausula FOR UPDATE OF de la instruccion DECLARE CURSOR.
La clausula WHERE identifica el cursor que apunta a la fila que va a
ser actualizada. Despues de actualizar una fila, la posicion del cursor
permanece en esa fila hasta que se utilice una instruccion FETCH para
la siguiente fila.
Con la instruccion UPDATE se actualizan varias filas con una sola ins-
truccion SQL, mientras que UPDATE ... WHERE CURRENT OF, permite obtener
una copia de la fila, examinarla, y entonces, actualizarla.
DELETE
______
Funcion
_______
Una vez que se ha recuperado la fila actual, se puede borrar con DELETE.
Formato
_______
EXEC SQL
DELETE FROM nombre_de_la_tabla
15/58
WHERE CURRENT OF nombre_del_cursor
END-EXEC
CLOSE
_____
Funcion
_______
Formato
_______
EXEC SQL
CLOSE nombre_del_cursor
END-EXEC
Ejemplo:
Supongamos que se quieren actualizar los datos de los empleados de la
tabla DSN.EMPL dando un SYNCPOINT cada 100 filas.
EXEC SQL
DELETE FROM DSN.EMPL
16/58
WHERE EMNO = :UPD-EMP
END-EXEC
OPERACIONES ARITMETICAS
_______________________
FUNCIONES BUILT-IN
__________________
AVG
___
Promedio de los valores de una o mas columnas que contengan datos nume-
ricos.
MAX
___
MIN
___
17/58
SUM
___
COUNT
_____
EXEC SQL
SELECT COUNT(*)
INTO EMP-COUNT
FROM DSN-EMP
WHERE JOBCODE >= 50
END-EXEC
EXEC SQL
SELECT COUNT (DISTINCT DEPTNO)
INTO DST-COUNT
FROM DSN-EMP
END-EXEC
GROUP BY
________
Ejemplo:
Calculo del salario medio por departamento el resultado sera una fila
por departamento al no especificar WHERE, se procesan todas las filas.
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT WORKDEPT, AVG(SALARY)
FROM DSN-EMP
GROUP BY WORKDEPT
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :WORK-DEPT, :AVG-SALARY
18/58
END-EXEC
Ejemplo:
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT WORKDEPT, SEX, AVG(SALARY)
FROM DSN-EMP
GROUP BY WORKDEPT, SEX
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :WORK-DEPT, :SEX, :AVG-SALARY
END-EXEC
HAVING
______
Ejemplo:
Calculo del salario medio de las mujeres por departamento, pero solo
para los departamentos en los que todos los empleados poseen un nivel
de educacion igual o superior a 16.
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT WORKDEPT, AVG(SALARY), MIN(EDUCLVL)
FROM DSN-EMP
WHERE SEX = 'F'
GROUP BY WORKDEPT
HAVING MIN(EDUCLVL) >= 16
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :WORK-DEPT, :AVG-SALARY, :MIN-EDUC
END-EXEC
ORDER BY
________
Ejemplo:
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT EMPNAME, WORKDEPT
FROM DSN-EMP
WHERE SEX = 'F'
ORDER BY WORKDEPT DESC, EMPNAME
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :PGM-NAME, :WORK-DEPT
END-EXEC
UNION
_____
Permite combinar dos o mas instrucciones SELECT para formar una unica
tabla de resultados, eliminando las filas duplicadas. Se usa para mez-
clar valores de varias tablas, pero el conjunto de filas seleccionadas
de una tabla es añadido al conjunto de filas seleccionado de otra.
Para especificar las columnas por las que se quiere ordenar se deben
usar numeros, y nunca nombres de columnas.
Ejemplo:
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT EMPNO
FROM DSN.EMP1
WHERE WORKDEPT = :WORK-DEPT
20/58
UNION
SELECT DISTINCT EMPNO
FROM DSN-EMP2
WHERE PROJNO = :NUM-PROY
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :EMP-NUMBER
END-EXEC
Ejemplo:
A=3 B=2 AB=6
Este metodo se puede usar para crear una vista, pero esta no puede ser
procesada mediante instrucciones UPDATE, DELETE o INSERT.
Ejemplo:
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT EMP1.EMPNO, LASTNAME, ACTNUM, EMPTIME
FROM DSN.EMP1, DSN-EMP2
WHERE EMP1.EMPNO = EMP2.EMPNO
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :EMP-NUMBER, :NAME, :ACTIV, :TIME
END-EXEC
21/58
Todas ellas se pueden codificar con NOT.
Especifica que la condicion debe ser satisfecha por cualquier valor que
este comprendido entre los dos valores especificados.
IN
__
Indica que se esta interesado en las filas para las que el valor de la
columna especificada esta entre los valores que se listan.
LIKE
____
Indica que se esta interesado en las filas para las que el valor de la
columna especificada es similar al que se proporciona. El grado de pa-
recido es determinado por dos caracteres especiales usados en la cadena
que se incluye en la condicion de busqueda:
Ejemplo:
. Para encontrar todos los empleados que viven en San Jose, debemos es-
tar seguros de que San Jose no es parte del nombre de otra ciudad,
porque el DB2 nos devolveria tambien esa fila.
. Para encontrar todos los empleados que viven en ciudades que comien-
den por SAN.
IS NULL
_______
Indica que se esta interesado en las filas para las que el valor de la
columna especificada es nulo.
22/58
WHERE CODIGO IS NULL
Para indicar que se esta interesado en las filas para las que el valor
de la columna especificada es blancos.
VISTAS
______
CONCEPTO
________
Una vista basada en una tabla de empleados puede contener filas solo
para un determinado departamento.
Para insertar una fila en una tabla por medio de una vista, la fila
debe tener un valor para cada columna de la tabla que no posee un
valor por defecto.
23/58
Si se crea una vista usando funciones BUILT-IN o las clausulas DISTINCT
o GROUP BY, solamente es posible usar la instruccion SELECT para ella.
Si una columna de una vista es definida por medio de una expresion arit-
metica, no se podra actualizar la columna o insertar filas en la vista.
Si se crea una vista especificando 'WITH CHECK OPTION', todas las inser-
ciones y actualizaciones contra la vista son chequeadas antes para com-
probar que la fila esta conforme con la definicion de la vista.
SUBQUERY
________
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT EMPNO, LASTNAME, JOBCODE
FROM DSN.EMP1
WHERE EDUCLEVEL >
24/58
(SELECT AVG (EDUCLEVEL)
FROM DSN.EMP2
END-EXEC
25
.......................................
EXEC SQL
FETCH XYZ
INTO :EMP-NUMBER, :NAME, :CODE
END-EXEC
Ejemplo:
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT EMPNO, LASTNAME, JOBCODE
FROM DSN.EMP1
WHERE EMPNO IN
(SELECT DISTINCT EMPNO
FROM DSN.EMP2
WHERE PROYNO = 'M1')
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :EMP-NUMBER, :NAME, :CODE
END-EXEC
25/58
Ejemplo:
SUBQUERY CORRELATIVA
____________________
Una SUBQUERY correlativa se ejecuta una vez para cada fila de la tabla
o vista mencionada en la SELECT de nivel superior, de forma que se eva-
lua la SUBQUERY para cada fila.
Se usa para calcular algun valor que puede ser diferente para cada fila.
OTROS EJEMPLOS
______________
EXEC SQL
DECLARE XYZ CURSOR FOR
SELECT EMPNO, LASTNAME, WORKDEPT, JOBCODE
FROM DSN.EMP ESTAFILA
WHERE JOBCODE >
(SELECT AVG (JOBCODE)
FROM DSN.EMP
WHERE WORKDEPT = ESTAFILA.WORKDEPT)
END-EXEC
.......................................
EXEC SQL
FETCH XYZ
INTO :EMP-NUMBER, :NAME, :DEPT, :CODE
END-EXEC
26/58
. Con una UPDATE
______________
EXEC SQL
UPDATE DSN.EMP1 ESTAFILA
SET DATE = 9999
WHERE 840901 >
(SELECT MAX (ENDATE)
FROM DSN.EMP2
WHERE PROJNO = ESTAFILA.PROJNO)
END-EXEC
EXEC SQL
DELETE FROM DSN.EMP1 ESTAFILA
WHERE NON EXISTS
(SELECT *
FROM DSN.EMP2
WHERE PROJNO = ESTAFILA.PROJNO)
END-EXEC
SPUFI
_____
1) Panel Principal
_______________
3) PANEL COMMIT/ROLLBACK
_____________________
RESTRICCIONES
_____________
WORKING-STORAGE SECTION
EXEC SQL
INCLUDE SQLCA
END-EXEC
EXEC SQL
DECLARE DSN.TDEPT TABLE
(DEPNUM CHAR(3) NOT NULL,
DEPNOM VARCHAR(36) NOT NULL)
END-EXEC
EXEC SQL
INCLUDE nombre_del_miembro
END-EXEC
VARIABLES INDICADOR
Ejemplo:
EXEC SQL
SELECT TELFNUM
INTO :TELEF:INDNULL
FROM DSN.TABEMPL
WHERE EMPNO = :EMPID
END-EXEC
Se usa para:
SQLCABC
SQLCODE
-n ha ocurrido un error
SQLERRM
SQLERRD(3)
indica el numero de filas insertadas, actualizadas o
borradas en una tabla.
SQLWARN1
SQLWARN2
SQLWARN3
SQLWARN4
EXEC SQL
WHENEVER CONDICION ACCION
END-EXEC
. NOT FOUND indica que se quiere hacer cuando el DB2 no puede encon-
trar una fila que satisfaga la instruccion SQL o cuando no hay mas
filas para hacer una fetch (SQLCODE=100)
. Evitar el uso de predicados con LIKE que comiencen por '%' o '_'
- DECLARE CURSOR.
- SQLCODE = 100.
APENDICE I
DISTINCT
*----------------------------------------------------------------*
* LEER TABLA DE ALTAS DE CLIENTE. *
*----------------------------------------------------------------*
BUSCA-ALTAS.
MOVE TVACLTEA TO CVANORAA-A
EXEC SQL
SELECT DISTINCT CVANORAA, CVANCTAA
INTO :CVANORAA-A, :CVANCTAA-A
FROM FVAORALV
WHERE CVANORAA = :CVANORAA-A
END-EXEC.
COUNT
*----------------------------------------------------------------*
*CUENTA EL NUMERO DE DOMICILIACIONES DE UNA ENTIDAD EMISORA *
*----------------------------------------------------------------*
CUENTA-DOMICILI.
EXEC SQL
SELECT
COUNT (*)
INTO :CDOIMPOP-M
FROM FDOMAESV
WHERE CDOEMISA = :CDOEMISA-M
END-EXEC.
SUM
*----------------------------------------------------------------*
*SUMA EL CONTENIDO DEL CAMPO CVANTITP *
*----------------------------------------------------------------*
EXEC SQL
SELECT SUM(CVANTITP)
INTO :CVANTITP-C :IND-NULL
FROM FVAORBCV
WHERE CVAENTIA = :WS-ENTI-DEPOS-1234 AND
CVACLTEA = :CVACLTEA-C AND
CVAPIVAA = :CVAPIVAA-C AND
CVAOBSTA = '03' AND
CVATIOPA = '5'
END-EXEC.
UNION
*------------------------------------------------------*
* SELECCIONAR DE CARTERAS LA SUMA DE TITULOS QUE EL *
* CLIENTE POSEE DE LA CLAVE VALOR AMPLIACION Y QUE *
* ESTEN EN SITUACION '0' O '1'. *
* SE RECUPERARA UN FILA POR CADA DISTINTO CLTE EN CADA*
* CARTERA. *
*------------------------------------------------------*
DECLARE-CURSOR1.
MOVE CORRECTO TO SQLCODE.
EXEC SQL
DECLARE CURSOR1 CURSOR FOR
SELECT
D.CVACLICA, SUM(CVAUNUMP - CVAPNUMP + 1)
FROM
FVACARTV D
WHERE
(D.CVAENTIA = :W-ENTIDAD AND
D.CVACLANA >= :WS-CVACLA00 AND
D.CVACLANA <= :WS-CVACLA19 OR
D.CVAENTIA = :W-ENTIDAD AND
D.CVACLANA >= :WS-CVACLA40 AND
D.CVACLANA <= :WS-CVACLA59) AND
D.CVASITIA IN('0', '1')
GROUP BY
D.CVACLICA
UNION ALL
SELECT
P.CVACLICA, SUM(CVANTITP)
FROM
FVACAPRV P
WHERE
(P.CVAENTIA = :W-ENTIDAD AND
P.CVACLANA >= :WS-CVACLA00 AND
P.CVACLANA <= :WS-CVACLA19 OR
P.CVAENTIA = :W-ENTIDAD AND
P.CVACLANA >= :WS-CVACLA40 AND
P.CVACLANA <= :WS-CVACLA59) AND
P.CVASITIA IN('0', '1')
GROUP BY
P.CVACLICA
ORDER BY 1
END-EXEC.
35/58
IF SQLCODE NOT = CORRECTO AND
SQLCODE NOT = NOENCONTRADO
THEN
MOVE 'DECLARE-CURSOR1' TO WS-PARRAFO
MOVE 'FVACARTV' TO DET8-TABLA
PERFORM FIN-DB2.
IN (not in)
WHERE CAMPO1 LIKE 'TIO %' (que empienza por "TIO ")
WHERE CAMPO1 LIKE '%RAMIRO%' (que lleva "RAMIRO" en
cualquier posicion)
EXEC SQL
DECLARE XMP1 CURSOR FOR
SELECT DEPARTAMENTO, SEXO, AVG(SALARIO)
FROM TABLA1
GROUP BY DEPARTAMENTO, SEXO
END-EXEC.
EXEC SQL
FETCH XMP1
INTO :CAMPO1, :CAMPO2, CAMPO3
END-EXEC.
(MAX)
EXEC SQL
SELECT MAX(SALARIO)
INTO :CAMPO1
FROM TABLA1
WHERE DEPARTAMENTO = 'AX21'
36/58
END-EXEC.
EXEC SQL
SELECT MIN(SALARIO)
INTO :CAMPO1
FROM TABLA1
WHERE DEPARTAMENTO = 'AX21'
END-EXEC.
EXEC SQL
DECLARE XMP1 CURSOR FOR
SELECT DEPARTAMENTO, AVG(SALARIO), MIN(EDLI)
FROM TABLA1
WHERE SEXO = 'V'
GROUP BY DEPARTAMENTO
HAVING MIN(EDLI) >= 16
END-EXEC.
EXEC SQL
FETCH XMP1
INTO :CAMPO1, :CAMPO2, CAMPO3
END-EXEC.
(Nos da la media del salario y el valor minimo del campo EDLI por
departamento cuando el campo sexo sea = 'V' y el minimo de EDLI
sea mayor o igual que 16).
WLM.-IBM
ADMINISTRACION DE DATOS
ANALISIS DE APLICACIONES
________________________
PROGRAMACION DE APLICACIONES
|Gestion de Proyecto.
PLANIFICACION|Seleccionar la aplicacion piloto.
|Definicion de estandares.
|Identificar los recursos a proteger.
|Estrategia de desarrollo.
GESTION RDTO |Definir entorno de herramientas.
|Analizar y refinar.
|
PLANIFICACION.
_______________
3.-Definicion de Estandares.
Su actividad consistira en :
d) Directrices de documentacion.
2.-Analisis de aplicaciones.
* Definicion de requerimientos.
* Dise¤o externo.
* Dise¤o interno.
- ANALISIS DE DATOS.
* Prueba unitaria.
* prueba integrada.
* Nuevos usuarios.
* Establecer autorizaciones.
* Ejecutar RUNSTATS.
INTRODUCCION.-
______________
A)ANALISIS DE DATOS.
____________________
B)NORMALIZACION
_______________
C)INTEGRIDAD REFERENCIAL
________________________
46/58
Estos aspectos afectan al desarrollo, a la planificacion de
la recuperacion, etc.
INTEGRIDAD DE DATOS:
_____________________
A)CONCURRENCIA.
______________
La consulta.
-Tama¤o de la tabla.
51/58
15)En tablas peque¤as considerar espacio libre extra, para
reducir la contencion. Consideraciones generales entorno al
espacio libre son las siguientes:
-menor contencion.
SELECCION DE INDICES
____________________
ACCESO DE DATOS
_______________
53/58
1)Evitar que en las clausulas WHERE se den las siguientes
condiciones:
54/58
1)Fase de prueba unitaria.
--------------------------
-codigo fuente.
-DBRM.
-Modulos.
-JCL's.
| Programa |
| Fuente |
|
v
| Traductor |
| Comandos Cics |
|
v
| Precompilador |
| DB2 |
|
| |
v v
| DBRM | | Compilador |
| Cobol |
|
v |
| BIND | v
| linkaje |
|
v |
| PLAN | v
| modulo |
55/58
GESTION DE CAMBIOS EN BD
________________________
Por cambios en :
* Operador LIKE.
2.-MEJORAS EN LA OPERACION.
3.-MEJORAS DE RENDIMIENTOS.
C)En :
DB2.
____
_____________________________________________________________________
____________________________________________________________________
58/58