Oracle PLSQL
Oracle PLSQL
ORACLE
PL/SQL
Conocimientos
Consultor
Administrador de Sistemas de Informacin
Desarrollo de Software
Actividades Profesionales
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
CONTENIDO
ANSI SQL
SQL *PLUS
PL/SQL bsico
PL/SQL avanzado
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
FORMA DE EVALUACION
1er Parcial
20% Deberes
20% Lecciones
60% Examen
2do Parcial
20% Lecciones
20% Proyecto
60% Examen
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Parte I
Fundamentos de Oracle
SQL *Plus
Lenguaje SQL
Fundamentos de Administracin de Base de datos
ORACLE?
Fabricante de Software
Su producto estrella es la Base de Datos
ORACLE
Es la BD mas grande y vendida del mundo.
Ha creado varias lneas de productos y
servicios
http://www.oracle.com
http://www.otn.oracle.com
http://otn.oracle.com/documentation/index.html
Para DBAs y Arquitectos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Productos ORACLE
Oracle Database 10g
Oracle Database 9i
Oracle Lite
Oracle Personal
Oracle Server
Oracle Development
Oracle Forms Server
ORacle Designer
Oracle JDeveloper
Oracle Business
Intelligence
Warehouse Builder
Data Mining
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Caractersticas de Oracle 9i
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ciclo de Desarrollo
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Sentencias SQL
Data Manipulation Languaje (DML)
insert, update, delete
Oracle no considera el Select como
DML
Transaction control
commit, rollback, savepoint
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Sentencias SQL
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
SQL *Plus
Es la primera herramienta para
seleccionar datos y administrar la BD
Se encuentra en el HOME de Oracle
HOME es el directorio donde esta
instalado el DBMS
home$/bin/sqlplus.exe scott/tiger@server
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Un ambiente
Oracle propietario
Se puede abreviar
las palabras claves
Comandos que no
permiten
manipulacin de
valores en la BD
No se almacenan
en el buffer
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Comando SELECT
SELECT
SQL> SELECT empno, ename, sal
2 FROM emp
3 WHERE ename='SMITH';
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios
Mostrar el nuevo salario de los
empleados con el aumento del 8%
Calcule el sueldo anual de los empleados
Calcule el 20% de comisiones mas
sueldos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Precedencia operadores
PEMDAS
Parntesis
Exponente
Multiplicacin
Divisin
Adicin
Substraccin
Ejercicios
2+6/2
(2+6)/2
2/10+36*(84-6)
2/10+36*84-6
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
La tabla DUAL
Oracle permite hacer operaciones sin
campos de alguna tabla
Por ejemplo para realizar una simple suma
select 2+2 from dual
Ejemplo
select user from dual;
select sysdate from dual;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Valores NULOS
Nada es llamado NULL
NULL representa un campo vaco
NULL no es carcter en blanco
NULL tampoco es cero
Es la ausencia de informacin
Funcin NVL()
Sintaxis
NVL(nombre_columna;valor_si_es_null)
Ejercicios
Si MGR es NULL debe presentar 0
Si MGR es NULL presentar Jefe
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
La clusula Distinct
Omite los valores duplicados en una
salida de SELECT
select job from emp;
select distinct job from emp;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Uso de Alias
Oracle trunca los nombre de campo
cuando estos son calculados
El uso del alias soluciona este
problema
select empno, ename, nvl(mgr,0) as mgr
from emp;
La clusula AS no es necesaria
select empno, ename, nvl(mgr,0) mgr
from emp;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Concatenacin
Puede combinar columnas y valores
constantes con ||
select ename || ', quien es el ' || job || '
de la compaa' as "Nombre y rol
from emp
SQL*Plus
Obtiene datos de la BD
SELECT * FROM emp;
Comando CHANGE
Permiten corregir errores: c/viejo/nuevo
Facilitan la escritura de los comandos
SQL> select empno, ename, nvl(mgr, 'none') mgr
2 from emp;
select empno, ename, nvl(mgr, 'none') mgr
*
ERROR en lnea 1:
ORA-01722: nmero no vlido
SQL> 1
1* select empno, ename, nvl(mgr, 'none') mgr
SQL> c/'none'/0
1* select empno, ename, nvl(mgr, 0) mgr
SQL> /
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
desc emp;
LIST
Muestra lo que hay actualmente en el bfer
DEL numero
Elimina el numero de la lnea especificada
DEL 3
APPEND cadena
Agrega una cadena a la lnea actual
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
INPUT
Permite insertar una nueva lnea en el bfer
RUN
Ejecuta el contenido del bfer
Numero cadena
Agrega una cadena en la lnea especificada
Si ya existe esta es reemplazada
Si no existe se agrega al final
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
SAVE nombre_archivo
Graba el contenido del bfer en un archivo
EXIT
Cierra el SQL*Plus
Utilizando scripts
Se pueden grabar los comandos SQL
en distintos archivos con extensin
.sql
Comando get
Obtiene el contenido de un script y lo
almacena en afiedt.buf
Luego se ejecuta presionando /
Comando @ o start
Obtiene el contenido almacenndolo en
el bufer y ejecutndolo en un solo paso
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 2
Catalogo de la Base de Datos
Objetos de la Base de Datos
Objetos
Los objetos de usuario se almacenan
en la tabla OBJ
El dueo de esta tabla es SYS
ALL_TABLES
Muestra todas las tablas de la Base de datos
ALL_TAB_COLUMNS
Muestra las columnas de todas las tablas
ALL_CONSTRAINTS
Muestra todos los constraints.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 3
Creando tablas.
Sentencias DDL
Uso de scripts
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Creando tablas
Se utiliza el comando DDL
create table s1_depto
(idDept number(3),
nombreDept varchar2(30))
El dueo de la tabla es el usuario que
inicio la sesin actual
DATE
Almacena fechas.
Internamente ORACLE almacena la fecha como
numero.
VARCHAR2
Almacena texto
Es de longitud variable
CHAR
Almacena texto
Es de longitud fija
ROWID
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Consideraciones importantes
Hay que tener cuidado al modificar la
estructura de una tabla
Operaciones aceptables
Incrementando el tamao de una columna
char o varchar2
Incrementando el tamao de una columna
number
Operaciones decrementar tamao
Crear una copia de la columna en otra tabla
Realizar el cambio
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Renombrar un tabla
rename s1_depto to depto;
alter table depto to s1_depto
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Definiendo constraints
Los constraints permiten:
Permiten crear las relaciones entre las tablas.
Mantienen la integridad de los datos
Primary Key
Foreign Key
Unique
Check
Not null
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de constraints
Se pueden crear de dos formas
A nivel de campo
A nivel de tabla
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Primary Key
Indica que columna debe ser nica y no nula. La PK
puede tener mltiples columnas.
PK constraint a nivel de tabla
create table s1_depto
(idDept number(3),
nombreDept varchar2(30),
constraint pk_dept_01
primary key (idDept));
PK constraint a nivel de columna
create table s1_depto
(idDept number(3)
constraint pk_dept_01 primary key,
nombreDept varchar2(30));
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Primary Key
Se recomienda significativamente
definir los nombresde los constraintns
create table s1_depto
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
ao number(4),
numero number(4)
fecha date not null,
constraint pk_cabfac_01
primary key(ao, numero));
Ingresar datos y probar ingresando una
clave duplicada
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
UNIQUE constraints
La columna debe ser un valor nica.
Es muy til para definir las AK (Alternate key)
Create table s1_empleado (
Id_emp number(4) primary key,
Cedula char(10) constraint unq_Cedula unique,
Nombre varchar2(25),
Apellido varchar2(25),
Cargo varchar2(35),
Extension number(4),
Telefono number(10),
Lugar varchar2(30))
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Foreign Key
Permite crear una relacin entre dos
tablas
La columna en ambos lados debe ser del
mismo tipo.
No es necesario que tengan el mismo
nombre pero es una buena idea hacerlo
Previene eliminar datos que estn
relacionados
No se puede eliminar un departamento si
este tiene empleados
A nivel de TABLA
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo 1
drop table sjc_hija;
drop table sjc_padre;
create table sjc_padre (
id number(3) constraint pk_sjc_padre primary key,
nombre varchar2(30),
estado char(1));
create table sjc_hija (
id numeric(3),
sec number(2),
detalle1 varchar2(20),
detalle2 varchar2(20),
constraint pk_sjc_hija primary key (id,sec),
constraint fk_sjc_hija_padre foreign key (id) references
sjc_padre(id));
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo 2
drop table sjc_hija;
drop table sjc_padre;
create table sjc_padre (
id number(3) constraint pk_sjc_padre primary key,
nombre varchar2(30),
estado char(1));
create table sjc_hija (
id numeric(3) constraint fk_sjc_hija_padre references
sjc_padre(id),
sec number(2),
detalle1 varchar2(20),
detalle2 varchar2(20),
constraint pk_sjc_hija primary key (id,sec));
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
CHECK constraint
Definen una condicin que cada fila
debe satisfacer.
Permite verificar y validar los datos.
La expresin de la condicin es la
misma que en un SELECT excepto
por:
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Creacin de un CHECK
Create table prf_empleado (
Id_emp number(4) primary key,
Cedula char(10) unique,
Nombre varchar2(25),
Apellido varchar2(25),
Cargo varchar2(35),
Salario number(8,2) constraint chk_salario check (salario
between 50 and 500),
Extension number(4),
Telefono number(10),
Lugar varchar2(30),
Estado char(1) constraint chk_estado check (estado in ('A',
'E'))
);
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Agregando un constraint
Ejemplo:
Agregar una Foreign Key a la tabla de
empleados con la tabla de
departamentos
ALTER TABLE prf_empleado ADD
CONSTRAINT fk_emp_dep FOREIGN
KEY(id_Dep) REFERENCES
prf_departamento (id_Dep);
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Eliminando un CONTRAINT
Ejemplo
Eliminar una FOREIGN KEY
ALTER TABLE prf_empleados DROP
CONSTRAINT fk_emp_dep
El nombre de un constraint se
encuentra en las vistas del diccionario
de datos: USER_CONSTRAINTS y
USER_CONS_COLUMNS
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Deshabilitar
ALTER TABLE prf_empleados DISABLE
CONSTRAINT fk_emp_dep CASCADE;
CASCADE es opcional y deshabilita todos
los constraints dependientes
Habilitar
ALTER TABLE prf_empleados ENABLE
CONSTRAINT fk_emp_dep;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Crear las tablas de Cabecera y Detalle de
Facturas
Definir los constraints respectivos
PK, FK,
CHECK: precio mayor a 0
NOT NULL, campos importantes
Una vez creados los constraints consultarlos
desde el diccionario de datos
Agregar el campo estado a la cabecera de la
factura con un constraint de tipo CHECK que
valide que el estado de la factura sea A o E
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Secuencias
Son una buena forma de hacer que la BD
genere automticamente claves primarias
enteras y nicas
CREATE SEQUENCE schema.name
INCREMENT BY
START WITH x
MAXVALUE x
MINVALUE x
CYCLE
CACHE x
ORDER
NOMAXVALUE
NOMINVALUE
NOCYCLE
NOCACHE
NOORDER
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Parmetros de secuencias
Name
INCREMENT BY
START WITH
MAXVALUE
NOMAXVALUE
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Parmetros de secuencias
MINVALUE
NOMINVALUE
CYCLE
NOCYCLE
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Parmetros de secuencias
CACHE
NOCACHE
ORDER
NOORDER
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
NEXTVAL
Es una pseudo columna NEXTVAL.
Crea un nmero de secuencia nuevo
Esta debe estar precedida por nuestro
nmero de secuencia.
Por ejemplo,
adrs_seq.nextval devuelve 100 para el primer
acceso y 105 para el segundo.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 4
Limitando, Ordenando, y
Manipulando datos
WHERE
Permite filtrar o limitar informacin
Las comparaciones estn basadas en:
x
x
x
x
x
x
=y
>y
>= y
<y
<= y
<> y ; x!= y ; x ^= y
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Condicin LIKE
Es una comparacin especial para filtrar informacin
con caracteres
% -> Usado para mltiples caracteres
_ -> Usado para un solo carcter
SELECT ename, job, sal WHERE ename like S%
Muestra todos los empleados cuyo nombre empiece con
S
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Condicin Between
Permite hacer comparaciones entre un
rango de datos.
Es decir entre un valor inicial y un valor
final
Select * from emp where sal between 2500 and
3000
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Condicin IN
Especial comparacin para un set de
valores
Select * from emp where deptno in (10, 20,
30);
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Condicin NULL
Filtra los valores nulos.
Puede filtrase como IS NULL o IS NOT
NULL
SELECT ename, sal, comission WHERE
comission IS NULL
SELECT ename, sal, comission WHERE
comission IS NOT NULL
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
x or y
Una de ellas es verdadera
Not X
El opuesto lgico de x
X is null
Permite filtrar los valores nulos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Orden de precedencia
Los operadores siguen la siguiente
precedencia:
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
ORDER BY
Tienen dos tipos
asc -> ascendente
desc -> descendente
Los valores nulos pueden aparecer al final de la lista
(asc) o al principio (desc)
Puede ser aplicado a columnas de tipo NUMBER,
VARCHAR2, CHAR, DATE
Puede indicar la columna usando su posicin
Select empno, ename, sal from emp
Order by 2 desc, 3 desc;
Puede ordenar por el alias del campo
SELECT ename, sal*12 anual FROM emp ORDER BY
anual
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios 1
Listar los empleados que ganen mas de
$900 por ao y cuyo apellido este entre la
QU y ZU
Listar los empleados que no sean del
departamento 20 y 30 ordenados por cargo
ascendentemente
Listar los empleados que ganen menos de
100 o mas de 800 y cuyo apellido empiece
con S o con T
Listas los empleados que no ganen entre
300 y 350, y que hayan sido contratados
entre el 15 Feb 1998 y el 15 Oct 1999
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios 2
Listar los empleados que no tienen
Jefe
Listas todos los empleados que no
ganen $500, $800, y $1200
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 5
Funciones SQL
Funciones SQL
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
LENGTH(x)
Retorna la longitud de x.
SUBSTR(x,y[,z])
Retorna una subcadena de la cadena x empezando
con la posicion inicial y hasta el z. Si z no es
definido se ira hasta el final
INSTR(x,y)
Determina la posicin inicial en donde se ha encontrado
la cadena y dentro de la cadena x
TRIM(x)
Simplemente borra espacios a la izquierda y a la
derecha de la cadena x
TRIM(opcion x from columna)
Opcion puede ser leading, trailing, o both. Reemplaza x
caracteres a la columna especificada
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Funciones numricas
ABS(x)
Retorna el valor absoluto de un numero
ROUND(x,y)
Redondea un numero x de acuerdo a la
cantidad de decimales definido por y
ROUND(x,y)
Trunca un numero x de acuerdo a la cantidad
de decimales definido por y
MOD(x,y)
Devuelve el residuo de la divisin entre x y y
SQRT(x)
Devuelve la raz cuadrada de x
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Greatest(x,y,....)
Retorna el valor mas grande de la lista
Least(x,y,....)
Retorna el valor ms pequeo de la lista
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Funciones de conversin
Para asignaciones
De
VARCHAR2 o CHAR
NUMBER
VARCHAR2 o CHAR
DATE
NUMBER
VARCHAR2
DATE
VARCHAR2
Evaluacin de expresiones
De
VARCHAR2 o CHAR
NUMBER
VARCHAR2 o CHAR
DATE
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Funciones de conversin
Diseadas para convertir informacin entre tipos de
datos diferentes
TO_CHAR(x[,y])
Convierte un numero o una fecha a carcter de
acuerdo al formato especificado
TO_NUMBER(x)
Convierte un valor no numrico a numrico
TO_DATE(x[,y])
Con el valor x a una fecha usando el formato
definido en y
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Representa un nmero
Smbolo decimal
Smbolo de miles
SELECT ename,
format(sal,$9,999,999.00) Salario FROM
emp
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplos
SELECT SYSDATE,
TO_CHAR(SYSDATE,'MONTH'),
TO_CHAR(SYSDATE,'DD'),
TO_CHAR(SYSDATE,'YEAR') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MONTH'),
TO_CHAR(SYSDATE,'Month'),
TO_CHAR(SYSDATE,'month') FROM dual;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Mostrar la fecha de ingreso de los
empleados en formato da, numero
de la semana, mes en letras, y el ao
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Funciones anidadas
Es la capacidad de utilizar el resultado de una
funcin como parmetro de otra.
Se ejecutan desde el nivel mas profundo hasta el
mas alto.
SELECT nvl(to_char(mgr),No tiene jefe) FROM
emp;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
NULLIF(x,y)
Compara x con y si son iguales retorna NULL
si no son iguales retorna la primera.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Funcin DECODE()
Es el equivalente a la estructura
condicional mltiple.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Funcin CASE
Es el equivalente a DECODE.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercios
Escribir el SELECT para las siguientes
salidas.
SMITH gana $1000 pero quiere ganar
$3000.
SMITH
*******$500
KING
******$8000
SANDER
*******$600
Mostrar el da, mes y ao completo de la
fecha contratacin
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Otras funciones
USER
Devuelve el username del usuario actual
UID
Devuelve el ID del usuario actual
USERENV(opt)
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Deber 1
Listado de vendedores cuyo apellido
este desde la A hasta la J.
Listado de empleados cuya primera
letra este en la A, C, F, G, P, V, y Z.
Todos los proveedores cuyo ultimo
digito de la cedula este entre 1 y 4. (
si no existe el campo puede crearlo)
Muestre el tiempo de vida til de los
activos.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Deber 2
Muestre el tercer y cuarto digito de la serie
para los vehculos, edificios y maquinarias
Agregar un campo (char(1)) a la tabla de
empleados que indique el estado del
mismo. Esto es: A->'Activo, D>'Despedido', R->'Retirado'. Y
posteriormente liste los empleados con su
respectivo estado.
Las fechas de mantenimiento usualmente
se planifican un mes antes. Emita un
listado de los activos a dar mantenimiento
el mes siguiente.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Deber 3
Muestre el valor del primer mes de
depreciacin de los vehculos y de los
equipos de computacin
Muestre todos los activos cuyo valor de
rescate sea cero. En caso de ser nulo
muestre "No existe".
Emita un listado de los activos con el
respectivo departamento de acuerdo a lo
siguiente:
"El activo 1 fue pedido por el departamento de
Finanzas y esta a cargo de Tala Rubio"
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 6
Usando Varias Tablas
Seleccin avanzada de Datos
Producto cartesiano
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Sintaxis ANSI/ISO
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Sintaxis ANSI/ISO
Es una sintaxis que se aplica para los joins
utilizado en SQL Estndar
Esta sintaxis es a partir de Oracle 9i
Select e.name, e.deptno, d.dname
Capitulo 7
Funciones agregadas
Funciones agregadas
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios
Mostrar el sueldo mas alto
Mostrar el sueldo mas bajo
Mostrar cuanto paga en sueldos la
empresa
Mostrar cuantos empleados hay en la
compaa
Mostrar el promedio de sueldos que
gana un empleado
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios
Muestre el numero de personas por
departamento
Muestre el sueldo mas alto por
departamento
Muestre el sueldo mas bajo por
departamento
Muestre el monto que la empresa
paga en sueldos por cada
departamento
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Consultar el mnimo y mximo sueldo
de los empleados en cada
departamento cuyo salario mas
pequeo sea de 500
SELECT deptno, MIN(sal), MAX (sal)
FROM emp
GROUP BY deptno
HAVING MIN(sal) < 500;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 8
Subqueries
Subquery
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Subqueries
Bsicamente es un select dentro de otro
select.
Select ename, d.deptno, sal
from emp e join dept d on
d.deptno = e.deptno
where d.loc = NEW YORK
Select ename, deptno, sal
from emp
where deptno = (select deptno
from dept
where loc = NEW YORK)
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de subqueries
Retornan una fila
Retornan varias filas
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Mostrar el nombre del empleado que
mayor sueldo tiene.
Mostrar los departamentos cuyo
salario menor es mayor que el salario
menor del departamento 10
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
IN y EXISTS
Son dos comandos para evaluar un
conjunto de valores.
Select ename, deptno, sal
from emp
where deptno in (select deptno
from dept
where deptno in (10,20))
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
UNION
UNION ALL
INTERSECT
MINUS
UNION
Sirve para unir dos o mas consultas
en una sola sin considerar las filas
duplicadas
SELECT deptno FROM dept
UNION
SELECT dept FROM emp;
DEPTNO
---------10
20
30
40
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
UNION ALL
Sirve para unir dos o mas
consultas en una sola
considerando todas las filas
SELECT deptno FROM dept
UNION
SELECT dept FROM emp;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
INTERSECT
Sirve para unir dos o mas
consultas en una sola
considerando solo las filas que
estn en ambos querys
SELECT deptno FROM dept
INTERSECT
SELECT dept FROM emp;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
MINUS
Sirve para unir dos o mas consultas
en una sola considerando solo las
filas que estn en el primer query
pero no en el segundo
SELECT deptno FROM dept
MINUS
SELECT dept FROM emp;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
La pseudocolumna ROWNUM
Cada fila que se extrae de un query
tiene un indicador secuencial que
empieza desde uno.
Por ejemplo si solo desea los
primeros 5 registros de la tabla de
emp ejecute:
select ename, sal
from emp
where rownum <=5
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
La pseudocolumna ROWNUM
Ahora si deseamos consultar los 5
empleados con salario mas alto sera
incorrecto lo siguiente:
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
1. Crear una tabla de provincias con 5
registros en donde se guarde el
nombre.
2. Crear un campo ID para crear un
campo secuencial utilizando la
sentencia UPDATE con ROWNUM
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios
Calcular el activo de mayor costo
Calcular cuantos activos fijos estn
obsoletos
Cual es el promedio de compra de
activos de este ao
Cual es la computadora mas cara
Cual es el carro mas barato
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios 1
Con la tabla EMP y DEPT mostrar el
nombre, cargo, salario + comisiones
de todos los empleados cuya
comisin es mayor que la del
empleado ALLEN
Con sus tablas de activos fijos
Mostrar todos los activos que se les haya
dado cuando menos dos mantenimientos
Cual es el Mes que ms se ha comprado
activos fijos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios 2
Mostrar los activos mas caros de cada categora
Listar la suma de precio de comprar de los activos
agrupados por proveedor y categora
Cual es el cdigo, nombre, proveedor y categoria del
activo mas caro
Cual es el cdigo, nombre, proveedor y categora del
activo mas barato
Mostrar el numero de activos daados durante el
primer trimestre del ao actual
Cuantas computadoras para el departamento de
sistemas se compraron el ao anterior
Mostrar todos los activos cuyo precio de compra es
mayor que el promedio de precio de compra
Mostrar los activos que mayor gasto de
mantenimiento han demandado ordenados por id
activo
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios 3
Es importante saber que activos ya tienen
mas del 80% de su vida til ya que no se
les debe hacer ningn mantenimiento,
porque es preferible comprar uno nuevo.
Emitir un listado de los proveedores que
nos han vendido activos por mas de $5000
desde hace tres aos ordenados por
nombre y monto
Mostrar el monto invertido en
mantenimiento para todos los activos que
tienen mas de 5 de estos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicios 4
Emitir un listado de todos loa activos ordenados por
categoria y que sean mayor que el promedio
de compra de los mismos.
Mostrar todos los activos que no tengan ningun
registro en la tabla de depreciacion
Cuales son los empleados que no tinen a cargo
activos
Mostrar el numero de activos por departamento que
no se les ha dado mantenimiento
Cada activo se debe marcar como especial si su precio
de combra es mayor que el promedio de precio
de compra de todos los activos.
Crear una tabla para procesos estadistiscos con los
activos que ingresaron por mes y cuyo valor
actual sea menos del 50% de su costo original.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Cube
Es una extensin similar a rollup pero
crea subtotales para todas las
posibles combinaciones.
Select deptno, job, sum(sal) as salary
From emp
Group by cube(deptno,job);
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 9
Vistas
Sinnimos
Queries Jerrquicos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
CREATE VIEW vw_prf_emp01
AS SELECT ename, job, deptno
FROM EMP WHERE SAL>1000;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
SELECT *
FROM vw_prf_emp01
ORDER BY DEPTNO
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Que es un sinnimo?
Simplifica el acceso a los objetos
creando otro nombre.
Permiten
Ocultar el nombre real de una tabla y dar
acceso con otro nombre a otros usuarios.
Hacer mas corto el nombre de los
objetos
Ejemplos de Sinnimos
Crear un nombre mas corto para la
vista vw_prf_emp01
CREATE SYNONYM s_Emp
FOR vw_prf_emp01
Eliminar un sinnimo
DROP SYNONYM s_Emp;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Queries Jerrquicos
Una base de datos relacional no almacena
los datos jerrquicamente
Sin embargo existe una relacin jerrquica entre
las filas de una tabla recursiva
Medicina
Geografa
Ensamblado de productos
Estructuras organizacionales
Investigacin de especies
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Estructura Jerrquica
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Select Jerrquico
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
No es ANSI SQL
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Empleados que estn a cargo de JONES
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Niveles jerrquicos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Mostrar grficamente la estructura de
la organizacin
select lpad(ename,
length(ename)+(level*4)-4,'_') as org
from emp
start with ename='KING'
connect by prior empno=mgr
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Eliminando ramas
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 10
Salida con Formato en SQL*Plus
BTITLE Nombre
Define el titulo para el pie del reporte.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Nombres de columnas
Cada columna puede mostrar su propio
titulo
Es similar a definir un alias pero esta vez es
para el reporte
Facilitan la compresin del reporte
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
CLEAR BREAK
Borra y deshabilita los comandos breaks
BREAK ON PAGE
Realiza un punto de quiebre por cada pagina
BREAK ON REPORT
Realiza el punto de quiebre al final del reporte
til para obtener el total general del reporte
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Totales de grupos
BREAK ON deptno SKIP 2
COMPUTE SUM OF sal ON deptno
Suma los salarios por cada cambio de
departamento
COMPUTE
COMPUTE
COMPUTE
COMPUTE
COMPUTE
CLEAR COMPUTE
Borra y deshabilita los COMPUTE
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
set pagesize 50
set linesize 100
TTITLE 'Listado de empleados'
BTITLE 'JDepartamento de Sistemas'
COLUMN dname FORMAT A10
COLUMN sal FORMAT $99,999.99
COLUMN comm LIKE sal
COLUMN
COLUMN
COLUMN
COLUMN
COLUMN
COLUMN
COLUMN
COLUMN
Ejercicio
Crear un reporte interactivo que pida
la categora de activo y muestre
todos los activos pertenecientes a
dicha categora.
El reporte debe agrupar los datos por
departamento mostrando los respectivos
totales basados en el precio del activo.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Configuracin de PL/SQL
SET UNDERLINE carcter
Define el carcter de subrayado en la
cabecera de los titulos.
Por default es
Por ejemplo
SET UNDERLINE *
Define como carcter de
subrayado el asterisco
EMPNO
ENAME
JOB
MGR
********** ********** ********* **********
7369 SMITH
CLERK
7902
7499 ALLEN
SALESMAN
7698
7521 WARD
SALESMAN
7698
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Configuracin de PL/SQL
SET AUTOCOMMIT OFF|ON|NUMBER
ON
Le dice a SQL*Plus que por cada select
confirme los cambios.
Evita el uso del comando commit
NUMBER
Es mas especifico e indica que cada n
comandos haga un commit
OFF
Es el default, cada cambio hay que
realziarlo manualmente con commit;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Arquitectura de Oracle
Conceptos bsicos de administracin de Oracle
SGA
PGA
Procesos
Tareas de un DBA
Planificar y crear la base de datos
Asegurar la disponibilidad de la BD
Administrar las estructuras fsicas y
lgicas
Administrar la Seguridad
Administracin de la Red
Respaldos y Recuperacin
Performance de la Base de Datos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Conceptos bsicos
Un Servidor de Base de Datos Oracle
esta compuesto por:
Instancia de Oracle
Base de Datos
Oracle Database
Instancia de Oracle
Estructura de la memoria
Procesos en background
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Estructura de la memoria
SGA (System Global Area)
Es el primero y mas importante
componente de la memoria de Oracle
Cuando los DBAs hablan de la memoria
generalmente se refieren a la SGA
Memory Structure
Program Global Area
(PGA)
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Componentes de la SGA
Esta formada por
Buffer Cache
Almacena datos en memoria
Shared Pool
Almacena instrucciones y definiciones
Esta diseado para ofrecer performance a la
Base de Datos en ambientes multiusuario
Redo Log Buffer
Buffer Cache
La memoria esta formada por buffers
El tamao de cada buffer es el mismo
que un bloque de la base de datos
Un bloque es la unidad mas pequea que
usa Oracle para almacenar informacin
que puede ser algunas filas de una tabla
Shared Pool
Tiene dos estructuras obligatorias
Library Cache
Almacena el texto de sentencias SQL y el plan
de ejecucin para un posible reuso
Dictionary Cache
Tambin se conoce como Row Cache
Guarda informacin recin procesada del
diccionario de datos tales como definiciones de
tablas, columnas, nombres de usuario, claves y
privilegios o permisos
Memory Structure
System Global Area (SGA)
Program Global Area
(PGA)
Buffer
Cache
Redo Log
Buffer
Shared Pool
Library Cache
Dictionary Cache
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de procesos
Proceso de Servidor
Server processes
Es el mas importante desde la
perspectiva del usuario
Proceso de Red
Network processes
Procesos en background
Background processes
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Procesos de Servidor
Consiste en leer informacin desde el
disco y llevarla al buffer cache
Una vez que la informacin est en el
buffer cache el usuario la puede
manipular
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Proceso de Red
Llamado Dispatcher
Se utiliza en conjunto con un proceso de
servidor compartido
Procesos en background
DBW0
Database writers
LGWR
Log Writer
CKPT
Checkpoint
SMON
System Monitor
PMON
Process Monitor
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Buffer
Cache
LGWR
CKPT
Shared Pool
Library Cache
Dictionary Cache
DBWR
Data1.dbf
Data2.dbf
Data3.dbf
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
SMON
PARTE II
Programacin PL/SQL
Conceptos avanzados de
Administracin de Base de Datos
Programacin PL/SQL
Estructura
Tipos de datos y Variables
Excepciones
PL/SQL
Es la base de la programacin en ORACLE
Es un lenguaje de desarrollo de aplicaciones de
base de datos
Soporta todos los comandos SQL
Adicionalmente ofrece
Estructuras condicionales y repetitivas
Operaciones de cursor
Tipos de datos abstractos
Modularizacin
Encapsulacin
Overloading
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
PL/SQL
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de Bloques
Annimo
Procedimiento
Funcin
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Variables
Es necesario declarar las variables y las
constantes antes de hacer referencia a ellas
en cualquier otra instruccin
Sintaxis general
Ejemplos
DECLARE
vPrdPrecio NUMBER := 45;
vDescripcion VARCHAR2(50);
vdirEmba
CHAR;
vEdad NUMBER NOT NULL :=0;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Asignacin de variables
Operador de asignacin
vPrdPrecio :=15.26;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Constantes
Se utiliza la palabra clave CONSTANT
Ejemplo
porcIva CONSTANT NUMBER := 0.12;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de Datos
Hay tres categoras de tipos de datos:
Escalar
No tienen componentes
Compuestos
Registros, tablas, vArrays
Referencias
Punteros a otros tipos
Tipos escalares
NUMBER
Es igual al tipo NUMBER de la BD
nombre_variable NUMBER [(P,S)]
P es precisin y S escala
VARCHAR2
Similar al tipo VARCHAR2 de la BD
nombre_variable VARCHAR2 (L)
L es la longitud desde 1 hasta 32767 bytes
L en una columna de BD es hasta 4000 en 8i, 9i
L en una columna de BD es hasta 2000 en
Oracle 7.x
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos escalares
CHAR [(L)]
L es la longitud y es opcional
DATE
Igual al tipo DATE de la BD
Almacena desde el siglo hasta el segundo
Utiliza 7 bytes (1 para cada componente)
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
%TYPE
Hace flexible los cambios de la base
de datos en la siguiente compilacin
de un procedimiento PL/SQL sin
cambiar el cdigo
Declare
vSalario emp.salario%TYPE;
vTemp NUMBER(7,3) NOT NULL := 12.3;
vTemp1 vTemp%TYPE;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo 1
Cambia la carrera de un estudiante
Set serveroutput off;
declare
v_numEst s11_estudiante.id%type;
v_carrera s11_estudiante.carrera%type;
begin
v_numest:=&numest;
v_carrera := '&carrera';
update s11_estudiante
set carrera=v_carrera
where id = v_numest;
if sql%notfound then
dbms_output.put_line('No existe el estudiante');
else
dbms_output.put_line('Especialidad actualizada correctamente');
end if;
end;
/
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo 2
DECLARE
v_aula s11_aula.id_aula%type;
v_puestos s11_aula.num_puestos%type;
v_mensaje varchar2(20);
BEGIN
v_aula:=&aula;
select num_puestos into v_puestos
from s11_aula
where id_aula = v_aula;
if v_puestos < 20 then
v_mensaje:='Aula pequea';
elsif v_puestos >= 20 and v_puestos < 50 then
v_mensaje:='Aula Grande';
else
v_mensaje:='Es un Auditorium';
end if;
dbms_output.put_line(v_mensaje);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('imposible de determinar');
END;
/
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
El paquete DBMS_OUTPUT
Muestra mensajes en pantalla
Para esto hay que seguir dos pasos:
SET SERVEROUTPUT ON/OFF/[SIZE n]
N es el tamao del buffer de salida
El tamao por default es 2000 bytes
El tamao mximo es 1000000 de bytes
DBMS_OUTPUT.PUT_LINE
Aade un mensaje al buffer y lo muestra en
pantalla
Ejemplos
Crear un bloque PL/SQL que pida el
cdigo del estudiante y muestre su
nombre y apellido
Crear un bloque PL/SQL que permita
crear nuevas materias
Crear un bloque PL/SQL que permita
modificar el numero de crditos de
una materia
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Sentencia CASE
CASE test_var
WHEN valor1 THEN
secuencia_instruciones_1;
WHEN valor2 THEN
secuencia_instruciones_2;
...
WHEN valorn THEN
secuencia_instruciones_n
ELSE otra_secuencia
END CASE;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Pedir el ID del estudiante, el ID del
paralelo y mostrar su apellido +
nombre, descripcin de materia y el
estado ya sea aprobado, reprobado o
cursando.
Pedir un numero y mostrarlo en letras
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Bucles
PL/SQL tiene 4 tipos de bucles
Bucles simples
LOOP
Bucles WHILE
Bucles FOR numricos
Bucles FOR de cursores
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
LOOP
Es el tipo de bucle ms bsico
LOOP
secuencia_de_instrucciones;
END LOOP;
Es un bucle indefinido ya que no tiene una
condicin de parada
Sin embargo puede aadir una condicin mediante
EXIT
IF condicin THEN
EXIT;
END IF;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Ingresar 100 registros en la tabla
s11_temp con la secuencia y su
nombre concatenado con la secuencia
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Bucles WHILE
WHILE condicin LOOP
secuencia_de_instrucciones;
END LOOP;
La condicin se evala antes de cada
interaccin
Si es FALSA o NULA termina
Puede usar las instrucciones EXIT o
EXIT WHEN dentro del WHILE
Repetir el ejercicio anterior con
WHILE
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Registros en PL/SQL
Los tipos compuestos son definidos por el
usuario
Para utilizar el registro hay dos pasos
Definir el tipo
Declarar las variables del tipo
Ejemplo de TYPE
DECLARE
TYPE t_Materia IS RECORD(
id_materia
s11_materia.id_materia%type:=10,
nombre s11_materia.nombre_materia%type:='Seminario I',
total_creditos s11_materia.total_creditos%type :=3,
total_Stud
NUMBER(3):=18);
v_Materia t_Materia;
BEGIN
insert into s11_materia
values (v_Materia.id_materia, v_materia.nombre,
v_materia.total_Creditos,v_materia.total_estud);
END;
/
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Uso de %ROWTYPE
Define un registro con los mismos
tipos de datos de una tabla
Al igual que %TYPE no incluyen las
restricciones NOT NULL
Si cambia la definicin de la tabla
%ROWTYPE tambin lo hace.
Como en el caso de %TYPE,
%ROWTYPE se evala cada vez que
se ejecuta o se compila el bloque
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo de %ROWTYPE
declare
v_Materia s11_materia%ROWTYPE;
begin
v_Materia.id_Materia:=20;
v_Materia.nombre_materia:='Programacin I';
v_MAteria.total_creditos:=3;
v_Materia.total_Estud:=40;
insert into s11_materia
values(v_Materia.id_materia,v_Materia.nombre_mate
ria,
v_MAteria.total_creditos,v_Materia.total_Estud);
end;
/
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Escribir en minsculas
Los nombres de objetos de BD (tablas, campos)
Identar
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 8
Cursores Explcitos
Cursores Implcitos
Conceptos Bsicos
Oracle procesa una instruccin SQL
asignado un espacio de memoria
llamada rea de contexto
Un cursor es un puntero al rea de
contexto
PL/SQL utiliza cursores para todas las
instrucciones de acceso a la
informacin de la BD
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de cursores
Implcitos
No es necesario declararlo, abrirlo o
cerrarlo
Sirven para procesar instrucciones
INSERT, UPDATE, DELETE y SELECT
INTO de una fila
Explcitos
Son declarados, abiertos y cerrados
Procesan una instruccin SELECT de mas
de una fila
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Declaracin de un Cursor
Consiste en
Definir su nombre
Asociar una instruccin SQL
Sintaxis
CURSOR nombre_cursor IS
instruccin_SQL;
Ejemplos
Declare
v_Aula sjc_paralelo.id_aula%type;
v_Materia sjc_paralelo.id_materia%type;
CURSOR c_Clases IS
SELECT * from sjc_paralelo
WHERE id_aula=v_Aula and
id_Materia=v_Materia;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Abrir el cursor
OPEN nombre_cursor;
Cuando se abre un cursor:
Se examinan los valores de las variables
de acoplamiento
Se determina el conjunto activo
Se hace apuntar el puntero a la primera
fila
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Declare
v_Materia sjc_paralelo.id_materia%type;
CURSOR c_Clases IS
SELECT * from sjc_paralelo
WHERE id_Materia=v_Materia;
Begin
v_Materia:=130;
OPEN c_Clases;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Extraccin de datos
Se utiliza la instruccin FETCH .. INTO
FETCH nombre_cursor INTO
lista_varibales;
FETCH nombre_cursor INTO
registro_PL/SQL;
Nombre_cursor es un cursor
previamente declarado y abierto
Las variables deben ser compatibles
en cuanto al tipo de datos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Declare
v_Materia sjc_paralelo.id_materia%type;
CURSOR c_Clases IS
SELECT * from sjc_paralelo
WHERE id_Materia=v_Materia;
v_Paralelo c_Clases%ROWTYPE;
BEGIN
v_Materia:=130;
OPEN c_Clases;
FETCH c_Clases INTO v_Paralelo;
FETCH c_Clases INTO v_Paralelo;
FETCH c_Clases INTO v_Paralelo;
END;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
FALSE
Cuando se ha ido a buscar una fila
TRUE
Si el ltimo FETCH no devuelve una fila
NULL
Si el SELECT del cursor no ha devuelto ningn
dato
%FOUND
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Registrar automticamente a todos
los estudiantes de la carrera de
Historia en el paralelo 502.
Tambin debe registrar el id y el nombre
y apellido como una sola cadena en la
tabla temporal.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Cursores parametrizados
El cursor admite parmetros al igual que una
funcin o procedimiento
Declare
CURSOR c_Historia(p_Carrera
sjc_Estudiante.carrera %TYPE)
IS
SELECT id, first_name,
last_name
FROM sjc_Estudiante
WHERE carrera = p_Carrera;
Los valores de los parmetros se asignan en la
instruccin OPEN
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Open c_Historia(Historia);
Ejercicio
Cambie el ejercicio anterior con
cursores parametrizados
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Crear un cursor que actualice los
nmeros de crditos actuales que
tiene un estudiante.
El cursor debe ser de actualizacin.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
DECLARE
v_NumCreditos sjc_paralelo.num_credits%TYPE;
CURSOR c_Registros IS
SELECT id, current_credits
FROM sjc_estudiantes
WHERE id IN (SELECT id_estudiante
FROM sjc_registros
WHERE id_Paralelo= 102)
FOR UPDATE OF current_credits;
BEGIN
FOR v_Estudiante IN c_Registros LOOP
SELECT num_credits
INTO v_NumCreditos
FROM sjc_paralelo
WHERE id_Paralelo= 102;
UPDATE students
SET current_credits = current_credits + v_NumCreditos
WHERE CURRENT OF c_Registros;
END LOOP;
COMMIT;
END;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 9
Excepciones
Tratamiento de Errores
Excepciones
Permiten tratar los errores de manera
inteligente y de recuperarse
Tipos de errores
De compilacin
Compilador informa de los errores y el
programador los corrige
De ejecucin
Motor de ejecucin de PL/SQL, son tratados
en programacin por medio de excepciones
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Declaracin de excepciones
Excepciones predefinidas
Error Oracle
Excepcin
Descripcin
ORA-0001
DUP_VAL_ON_INDEX
Clave duplicada
ORA-1001
INVALID_CURSOR
ORA-1012
NOT_LOGGED_ON
ORA_1017
LOGIN_DENIED
ORA_1043
NO_DATA_FOUND
ORA_1422
TO_MANY_ROWS
ORA_1476
ZERO_DIVIDE
ORA_1722
INVALID_NUMBER
ORA_6511
CURSOR_ALREADY_OPEN
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Secuencia_de_instrucciones1;
WHEN nombre_excepcin THEN
Secuencia_de_instrucciones2;
WHEN OTHERS THEN
Secuencia_de_instrucciones3;
END;
Una misma rutina puede utilizarse para mas de
una excepcin.
EXCEPTION
WHEN no_data_found or
too_many_rows THEN
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Exception OTHERS
Las excepciones predefinidas se
encuentran en el programa
EXCEPTION_INIT
Se generan implcitamente
Si se produce un error que no esta en
esta rutina se puede utilizar
EXCEPTION
WHEN OTHERS THEN
......
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
NO_DATA_FOUND
Se genera cuando una instruccin
SELECT .. INTO no ha encontrado
datos.
No hay que confundir con:
SQL%NOTFOUND
SQL%ROWCOUNT
Ya que estas se evalan en una
sentencia UPDATE o DELETE y no son
excepciones
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Crear un bloque PL/SQL que permita
ingresar una nueva materia.
Debe controlar la clave duplicada y
cualquier otro error que ocurra.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Generacin de excepciones
Son generadas por el usuario con la
instruccin RAISE.
Un ejemplo de seccin generada por
el usuario sera que se este
completando el cupo de cada paralelo
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
DECLARE
e_TooManyStudents EXCEPTION;
v_CurrentStudents NUMBER(3);
v_MaxStudents NUMBER(3);
v_ErrorCode log_table.code%TYPE;
v_ErrorText log_table.message%TYPE;
BEGIN
SELECT current_students, max_students
INTO v_CurrentStudents, v_MaxStudents
FROM sjc_paralelo
WHERE id_paralelo = 101;
IF v_CurrentStudents > v_MaxStudents THEN
RAISE e_TooManyStudents;
END IF;
EXCEPTION
WHEN e_TooManyStudents THEN
INSERT INTO sjc_log (info)
VALUES (Tiene ' || v_CurrentStudents ||
'students: maximo permitido is ' || v_MaxStudents);
WHEN OTHERS THEN
v_ErrorCode := SQLCODE;
v_ErrorText := SUBSTR(SQLERRM, 1, 200);
INSERT INTO log_table (code, message, info) VALUES (v_ErrorCode, v_ErrorText, Error de
Oracle');
END;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
SQLCODE y SQLERRM
SQLCODE
Devuelve el cdigo del error actual
SQLERRM
Devuelve el texto del mensaje de error
La funcin
DBMS_UTILITY.FORMAT_ERROR_STACK
hace lo mismo que SQLERRM
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Generar un bloque PL/SQL que
permita registrar un alumno en un
paralelo. Si ya existe la materia en
otro paralelo y todava hay cupo se
debe registrar en ese paralelo. Casi
contrario crear un nuevo paralelo.
Controlar que no existan paralelos
duplicados, que no se devuelvan mas de
una fila u tros errores posibles.
En la tabla de log ingresar la accin u
error que ha ocurrido.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 10
Procedimientos y funciones
Paquetes
Subprograma
Son creados y almacenados en la
Base de Datos
Se crean con la instruccin CREATE
OR REPLACE
Se almacenan en el diccionario de
datos, con el cdigo fuente y el
compilado
El cdigo compilado tambin se llama
cdigo-p y desde el disco pasa a la
SGA (System Global rea) para su
ejecucin
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Estructura de un subprograma
CREATE OR REPLACE PROCEDURE
nombre [(parametro [IN OUT INT OUT])]
IS
(seccion declarativa)
BEGIN
(lgica del subprograma)
EXCEPTION
(manejo de excepciones)
END nombre;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo Sencillo
CREATE OR REPLACE PROCEDURE
Simple
IS
v_Contador NUMBER;
BEGIN
v_Contador:=7;
END Simple;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Crear un procedimiento
Inserte una nueva fila en la tabla de
alumnos.
Utilizar la secuencia de estudiantes para
generar el nuevo id.
Introducir 0 en el campo current_credits.
Controlar los errores que puedan ocurrir.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo nuevoEstudiante
CREATE OR REPLACE PROCEDURE nuevoEstudiante (
p_FirstName sjc_estudiante.first_name%TYPE,
p_LastName sjc_estudiante.last_name%TYPE,
p_Carrera
sjc_estudiante.carrera%TYPE) AS
BEGIN
INSERT INTO sjc_estudiante (ID, first_name, last_name,
major, current_credits)
VALUES (sjc_seq_estudiante.nextval, p_FirstName, p_LastName,
p_Carrera, 0);
EXCEPTION
WHEN others THEN
dbms_output.put_line(Error al ingresar el estudiante);
END nuevoEstudiante;
/
BEGIN
nuevoEstudiante('Zelda', 'Zudnik', 'Computer Science');
END;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
User_Source
El cdigo fuente del mismo
User_Errors
El error de compilacin si es que existe.
SHOW ERROR
Es un comando que muestra los errores
que hay sobre los procedimientos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de parmetros
IN
(el modo de parmetro por defecto),
IN OUT o OUT,
dependiendo de la naturaleza de la
informacin que va a ser pasada.
Son variables que estn disponibles para
volver a ser asignadas dentro del
subprograma
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
IN
create or replace procedure aumentarSal(pID IN
jc_emp.empno%type)
is
aumento number(5,2) := 1.1;
begin
update jc_emp
set sal=sal*aumento
where empno=pID;
if sql%notfound then
insert into sjc_log values (10,'no existe emp','');
end if;
exception
when others then
insert into sjc_log values(1,'error','');
end aumentarSal;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
out
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Out 2
declare
vNom varchar2(100);
vSal number(9,2);
begin
consEmp(1,vNom,Vsal);
dbms_output.put_line(vNom || ' ' ||
vsal);
end;
/
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Definicin de procedimientos
Debemos especificar:
Un nombre de rutina
Los parmetros a pasar dentro y fuera de la rutina
PROCEDURE get_order (
in_order_num
IN NUMBER,
out status_code
OUT VARCHAR2,
out_msg
OUT VARCHAR2,
out_merch_total
OUT NUMBER
out_shipping
IN OUT NUMBER,
out_taxes
IN OUT NUMBER,
out_grand_total
OUT NUMBER
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Definicin de funciones
A diferencia de los procedimientos
estas retornan un valor
FUNCTION
Calc_Cargos (
In_merch_total
IN NUMBER
) RETURN NUMBER;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Create or replace function sjc_GetSal
(p_Empno IN number) return number
IS
v_Sal number;
begin
select sal into v_Sal FROM emp
WHERE empno=p_Empno;
return v_Sal;
end sjc_GetSal ;
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 11
Disparadores de Base de Datos
Triggers
Disparador
Mantienen restricciones de integridad
complejas que no pueden hacerse a
travs de constraints.
Permiten llevar una auditoria de la
informacin contenida en cada tabla
Indican automticamente a otros
programas que es necesario realizar
alguna accin antes de modificar
Publicar informacin sobre diversos
sucesos
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tipos de disparadores
DML
Se activan a travs de las instrucciones DML de
INSERT, UPDATE o DELETE
Pueden dispararse antes o despus de la operacin
El suceso de disparo especifica una o ms
instrucciones DML
De sustitucin
Oracle 8 y versiones posteriores
Se definen sobre las vistas
De sistemas
Oracle 8i y versiones posteriores
Se activan cuando tienen lugar un suceso del sistema
como la conexin o desconexin de la BD
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Suponga que desea llevar un
seguimiento de las estadsticas sobre
las carreras incluido el numero de
alumnos matriculados y el numero
total de crditos
Create table
sjc_Esta_Carrera (
carrera VARCHAR2(30),
total_creditos NUMBER,
total_estud NUMER);
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Para mantener actualizada la tabla de
estadsticas de carreras se debe
mantener un disparador sobre la
tabla de estudiantes que actualice
la de estadsticas cada vez que hay
cambios
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo
TrigOrder
Pkg33.sql
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Insertar automticamente el ID
/* Esto fallar, ya que no hemos especificado la clave primaria */
INSERT INTO sjc_estudiante (first_name, last_name)
VALUES (Darlene', Garcia');
CREATE OR REPLACE TRIGGER GenerarIDEstudiante
BEFORE INSERT OR UPDATE ON sjc_estudiante
FOR EACH ROW
BEGIN
/* Completa el campo ID de estudiante con el prximo valor
que genere la secuencia. Como ID es una columna de
sjc_estudiante, :new.ID es una referencia vlida. */
SELECT sjc_seq_estudiante.NEXTVAL
INTO :new.ID
FROM dual;
END GenerarIDEstudiante;
/
/* Ahora funcionar. */
INSERT INTO sjc_estudiante (first_name, last_name)
VALUES (Darlene', Garcia');
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejercicio
Crear una tabla de auditoria en donde
se grabe todas las operaciones sobre
los registros de las tablas de
estudiante, registros, y paralelos
La informacin a guardar es la
siguiente:
Fecha y Hora, Usuario, Tabla,Dato
anterior, Dato actual
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Capitulo 12
Conceptos Avanzados de
Administracin de la BD
Tablas partidas
Permiten aumentar la disponibilidad de
grandes bases de datos
Hace que sean ms fciles de administrar
Sintaxis:
CREATE TABLE schema.table ON schema.table
PARTITION BY RANGE (partition_key)
(PARTITION partition_name VALUES LESS THAN
(column_value)
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Tablas partidas
PARTITION BY RANGE
es la clave de la particin de la tabla.
PARTITION
es el nombre de la particin de la tabla.
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
ndices
Se utilizan para aumentar el rendimiento de
la Base de datos
Se necesita el privilegio del sistema create
index para ejecutar este comando
CREATE INDEX schema.index ON
schema.table (COLUMN ASC/DESC)
CLUSTER schema.cluster INITRANS x
MAXTRANS x TABLESPACE name
STORAGE clause PCTFREE x NOSORT
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Index
ON
Table
COLUMN
ASC/DESC
CLUSTER
INITRANS
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
MAXTRANS
TABLESPACE
PCTFREE
STORAGE
NOSORT
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]
Ejemplo 2
Protegido por Ley de propiedad intelectual, prohibida su reproduccin sin autorizacin previa del autor.
Mae. Juan Carlos Garca, MCP; [email protected]