Manual Básico de Oracle
Manual Básico de Oracle
EL MODELO RELACIONAL
El modelo relacional
E.F. Codd propuso el modelo relacional para sistemas de b.d. En 1970.
Sustituy a los modelos ms populares del momento: el jerrquico y el de
red. Facilidad de uso y flexibilidad.
Constituye la base para el sistema manejador de bd. Relacionales
(RDBMS).
Diagrama E-R
Mundo real
RECTNGULOS
ELIPSES
ROMBOS
LNEAS
Entidades
Atributos
Relaciones
Conectores
ENTIDADES
RELACIONES
Cardinalidad de Asignacin
Oracle 8: ORDBMS
Posibilidad de almacenar objetos (extensin a Oracle7)
o
Respecto a Oracle7:
o
TEMA 2
EL LENGUAJE S.Q.L.
Qu es S.Q.L.
Structured Query Language
Establecido como el lenguaje de base de datos relacional estndar.
Existen numerosos productos que soportan SQL, cada uno de ellos con
pequeas diferencias sin apenas importancia (p.ej. Oracle).
El SQL estndar es el publicado por ANSI e ISO.
Caractersticas de S.Q.L.
Lenguaje de definicin de datos (DDL)
o
Grant, Revoke.
Control de transacciones
o
Restricciones de integridad
o
Referencial, datos.
S.Q.L.
La sentencia SELECT
S.Q.L.
Sentencia Bsica
Ejemplos:
SELECT
FROM
SELECT
FROM emp;
empno,
S.Q.L.
Etiquetas de Columnas por defecto
Justificacin de etiquetas y datos por defecto:
o
Izquierda
Derecha
fechas y caracteres
datos numricos
S.Q.L.
Alias de columna
ename
emp;
*
S.Q.L.
Uso de Alias de columna
SQL> SELECT ename AS nombre, sal salario, sal*12 AS Salario Anual
FROM emp;
Resultado:
S.Q.L.
Expresiones aritmticas
Operadores:
o
Suma (+)
Resta (-)
Multiplicacin (*)
Divisin (/)
S.Q.L.
Valor NULL
S.Q.L.
Operador de concatenacin
Representado por dos barras verticales: ||
Vincula columnas o cadenas de caracteres.
Crea una columna resultado que es una expresin de tipo carcter.
Ejemplo:
S.Q.L.
Filas duplicadas
Las consultas, por defecto, muestran todas las filas, incluyendo las
duplicadas.
Las duplicadas se eliminan usando DISTINCT en la clusula SELECT:
S.Q.L.
Uso de la clusula WHERE
Establece un criterio de seleccin aplicable a la tabla de la que se quiere
recuperar datos.
Se especifica a continuacin de FROM.
La condicin de WHERE permite comparar columnas con otras columnas,
S.Q.L.
Sintaxis de WHERE
Ejemplo:
S.Q.L.
Operadores de comparacin
Aplicables en las condiciones de la clusula WHERE:
o
= Igual que
<> Distinto
BETWEEN m AND n
IN(lista)
LIKE
IS NULL
Entre m y n (inclusive)
Se encuentra en la lista
Se ajusta a un patrn
Es valor nulo
S.Q.L.
Ejemplos de comparacin
SQL>
SELECT
ename,
WHERE sal BETWEEN 1000 AND 1500;
saL
SQL>
sal,
SELECT
empno,
ename,
FROM
mgr
FROM
emp
EMP
ename
FROM
emp
Sintaxis de LIKE:
SQL>
SELECT
WHERE mgr IS NULL;
ename,
mgr
FROM
emp
S.Q.L.
Operadores lgicos
AND devuelve TRUE si ambas condiciones son TRUE.
OR devuelve TRUE si alguna de las condiciones es TRUE.
NOT devuelve TRUE si la siguiente condicin es FALSE.
S.Q.L.
Ejemplos con operadores lgicos
SQL>
SELECT
empno,
WHERE
sal
AND job = CLERK;
ename,
job,
sal
>=
FROM
emp
1100
SQL>
SELECT
empno,
WHERE
sal
OR job = MANAGER;
ename,
job,
sal
>=
FROM
emp
2000
SQL>
SELECT
ename,
job
FROM
WHERE job NOT IN (CLERK, MANAGER, ANALYST);
emp
S.Q.L.
Reglas de precedencia
Siempre es aconsejable, para facilitar la lectura de la sentencia SQL,
utilizar parntesis que fuercen la prioridad de los operadores lgicos.
Sin parntesis, el orden de evaluacin es:
o
2: NOT
3: AND
4: OR
S.Q.L.
Recuperaciones ordenadas
Las filas recuperadas en la sentencia SELECT, si no se especifica nada, no
tienen ningn orden determinado.
Se pueden ordenar con la clusula ORDER BY siempre al final de una
sentencia SELECT.
o
ASC
DESC
S.Q.L.
Sintaxis de ORDER BY
Ejemplo:
TEMA 3
FUNCIONES S.Q.L.
S.Q.L.
Funciones SQL
Existen dos tipos de funciones:
o
Carcter
Nmero
Fecha
Conversin
S.Q.L.
Funciones de Caracteres
Pueden ser de dos tipos:
o
Funciones de conversin
De manipulacin de caracteres:
o
CONCAT
SUBSTR
LENGTH
INSTR
LPAD Y RPAD
De conversin:
o
S.Q.L.
Funciones de conversin caracteres
LOWER: Convierte a minsculas.
UPPER: Convierte a maysculas.
INITCAP: Convierte la primera letra de cada palabra en maysculas, y el
resto en minscula.
Atencin: Usar una funcin de conversin dentro de la clusula WHERE
puede ser altamente ineficiente porque si la columna afectada forma
parte
de
un
ndice
ste
lo
desactiva, provocando un bajo rendimiento.
S.Q.L.
Funciones manipulacin caracteres
CONCAT: Concatena dos valores.
SUBSTR: Extrae una subcadena.
LENGTH: Devuelve la longitud de la cadena.
INSTR: Devuelve la posicin de un carcter o subcadena.
LPAD: Justifica a la derecha la cadena.
RPAD: Justifica a la izquierda la cadena.
S.Q.L.
Funciones Numricas
ROUND (columna | expresin, n)
o
S.Q.L.
Ejemplos de funciones numricas
SQL> SELECT ROUND(45.923, 2), ROUND(45.923, 0), ROUND(45.923, -1)
FROM SYS.DUAL;
Resultado: 45.92 46 50
SQL> SELECT TRUNC(45.923, 2), TRUNC(45,923), TRUNC(45.923, -1)
FROM SYS.DUAL;
Resultado: 45.92 45 40
S.Q.L.
Trabajando con fechas
Oracle almacena fechas en un formato numrico interno de 7 bytes:
o
S.Q.L.
Operadores aritmticos de fechas
Sumar o restar un nmero a/o de una fecha da por resultado una fecha.
Restar dos fechas para encontrar la cantidad de das entre esas fechas.
Sumar horas a una fecha dividiendo la cantidad de horas por 24.
S.Q.L.
Funciones de Fecha (I)
ADD_MONTHS (fecha, n)
o
S.Q.L.
Funciones de Fecha (II)
LAST_DAY (fecha)
o
S.Q.L.
Ejemplos funciones de fecha
MONTS_BETWEEN (01-SEP-95, 11-JAN-94)
ADD_MONTHS(11-JAN-94, 6)
11-JUL-94
08-SEP-95
30-SEP-95
19.6774194
01-AUG-95
01-JAN-96
01-JUL-95
01-JAN-95
S.Q.L.
Formatos de Fecha (I)
YYYY / YEAR
o
MM / MONTH
o
DY / DAY
o
fm (fill mode)
o
S.Q.L.
Formatos de Fecha (II)
Obtencin de la hora:
o
HH / HH12 / HH24
MI / SS / SSSS
AM o PM
Se permiten literales
S.Q.L.
Funciones de conversin (I)
La conversin de tipos de datos puede ser:
De VARCHAR2 o CHAR
a NUMBER
De VARCHAR2 o CHAR
a DATE
De NUMBER
De DATE
a VARCHAR2
a VARCHAR2
S.Q.L.
Funciones de conversin (II)
TO_CHAR (nmero | fecha [,fmt])
o
9: Representa un nmero
$: Signo de dlar
S.Q.L.
Funciones de conversin (III)
TO_NUMBER (char)
o
nmero (expr2).
S.Q.L.
La Funcin DECODE
S.Q.L.
Uso de DECODE
SQL>
DECODE (job,
sal*1.20,
FROM emp;
SELECT
ANALYST, sal*1.1,
sal)
AS
job,
CLERK, sal*1.15,
Nuevo
sal,
MANAGER,
salario
TEMA 4
FUNCIONES DE GRUPO
S.Q.L.
Funciones de Grupo (I)
AVG ([DISTINCT | ALL] n)
o
Valor promedio de n.
S.Q.L.
Funciones de Grupo (II)
STDDEV ([DISTINCT | ALL] n)
o
S.Q.L.
Funciones de grupo y Nulos
Las funciones de grupo IGNORAN los valores nulos de las columnas.
S.Q.L.
NVL y funciones de grupo
Esta media no es correcta porque se han ignorado las filas cuya comisin
es nula.
Solucin: Uso de la funcin NVL para forzar a las funciones de grupo que
admitan los valores nulos.
S.Q.L.
Sintaxis de GROUP BY
S.Q.L.
Uso de GROUP BY (I)
Si se incluye una funcin de grupo en una clusula SELECT, no se puede
seleccionar resultados individuales a menos que la columna
aparezca en la clusula GROUP BY.
No se pueden usar alias en GROUP BY.
Por defecto, tras un GROUP BY, las filas se ordenan de forma ascendente
Ejemplo:
S.Q.L.
Uso de GROUP BY (II)
La columna referenciada por GROUP BY no es necesario seleccionarla.
Todas las columnas mencionadas en la SELECT que no son funciones de
grupo, tienen que estar en la clusula GROUP BY.
Se
pueden
formar
agrupaciones
sobre
mltiples
columnas:
>SQL> SELECT deptno, job, sum(sal) FROM emp GROUP BY deptno, job;
S.Q.L.
Consultas no vlidas
Cualquier columna o expresin en la SELECT que no sea una funcin
agregada, tiene que ser especificada en la clusula GROUP BY
SQL> SELECT deptno, COUNT(ename) FROM emp;
No puede usar una clusula WHERE para restringir grupos. Utilice la
clusula
HAVING
para
restringir
grupos.
SQL> SELECT deptno, AVG(sal) FROM emp WHERE AVG(sal) > 2000
GROUP BY deptno;
S.Q.L.
Clusula HAVING
Use la clusula HAVING para restringir grupos:
o
S.Q.L.
Sintaxis de HAVING
TEMA 5
JOIN
S.Q.L.
Concepto de JOIN
Un JOIN se utiliza para consultar datos de ms de una tabla
La condicin de JOIN se escribe en la clusula WHERE.
Si existen columnas con el mismo nombre en las tablas seleccionadas, se
debern nombrar los campos
Ejemplo:
S.Q.L.
Tipos de JOIN
Existen dos tipos principales de JOIN:
o
EQUIJOIN
campos.
NON-EQUIJOIN
Por desigualdad, sin correspondencia
directa entre campos de tablas. La relacin se puede
establecer
mediante criterios de rango (<, >, BETWEEN, ...)
Y dos ms adicionales:
o
OUTER JOIN
Para ver, tambin, las filas que no complen la
condicin de Join. El operador de un Outer Join es el signo ms
(+),
en el lado del join que es deficiente en informacin.
SELF JOIN
S.Q.L.
Ejemplo de Equijoin
S.Q.L.
Ejemplo de Non-Equijoins
S.Q.L.
Ejemplo de Outer Join
S.Q.L.
Ejemplo de Self Join
TEMA 6
SUBCONSULTAS
S.Q.L.
Cundo subconsultas?
Quin tiene un salario superior al de Jones
S.Q.L.
Sintaxis de una subconsulta
S.Q.L.
Gua Uso de Subconsultas
Encierre las subconsultas entre parntesis.
No aada una clusula ORDER BY a una subconsulta.
S.Q.L.
Subconsultas Mono-registro
Devuelven un nico registro.
Se utilizan operadores de comparacin (=, >, >=, <, <= y <>).
Ejemplo:
S.Q.L.
Subconsultas Multi-registro
Devuelven ms de un registro
Se utilizan comparadores multiregistro:
o
IN
ALL
TRUE si la condicin se cumple con todos los registros
de la lista devuelta por la subconsulta.
El operador NOT puede ser utilizado con los operadores IN, ANY y ALL.
S.Q.L.
Ejemplo subc. Multi-registro
S.Q.L.
Subcons. en clusula FROM
Puede utilizar una subconsulta en una clusula FROM de una sentencia
SELECT:
TEMA 7
D.M.L.
S.Q.L.
Manipulacin de Datos (DML)
Sentencias DML son:
o
INSERT
UPDATE
DELETE
S.Q.L.
Control de Datos (DCL)
Estas sentencias se completan con los comandos de control de
transaccin (DCL), las cuales aseguran la consistencia de los datos.
o
COMMIT
Finaliza la transaccin actual haciendo que todos
los cambios pendientes pasen a ser permanentes.
ROLLBACK
Finaliza la transaccin en curso descartando
todos los cambios pendientes.
SAVEPOINT
Establece
una "marca" dentro
de
transaccin en curso, usada por COMMIT o ROLLBACK.
la
S.Q.L.
La Sentencia INSERT
S.Q.L.
Insercin de Valores Nulos
Mtodo Implcito: Omitir la columna en la lista:
S.Q.L.
Insercin Valores Especiales
SYSDATE registra la fecha y hora actual:
S.Q.L.
Insercin reg. de otra tabla
Se escribe el comando INSERT con una subconsulta.
No usar la clusula VALUES.
Deben coincidir el nmero de columnas de INSERT con el de la
subconsulta
S.Q.L.
La Sentencia UPDATE
S.Q.L.
Modificacin con subconsultas
P.ej.: Modificar el oficio y departamento del empleado 7698, con los
valores correspondientes actualmente al empleado 7499:
S.Q.L.
La Sentencia DELETE
S.Q.L.
Eliminacin con subconsulta
Utilice subconsultas en sentencias DELETE, para eliminar registros de una
tabla, basados en valores de otra tabla:
TEMA 8
D.D.L.
S.Q.L.
Definicin de Datos (DDL)
Sentencias DDL son:
o
CREATE TABLE
Crea una tabla. Para ello el usuario debe
de tener el privilegio CREATE TABLE.
ALTER TABLE
una tabla.
DROP TABLE
Elimina una tabla (datos y estructura) y sus
ndices. No se puede hacer Rollback de esta sentencia.
RENAME
Cambia el nombre de una tabla, vista, secuencia
o sinnimo.
S.Q.L.
Sentencia CREATE TABLE
Nombre de tabla
S.Q.L.
Reglas para los nombres
Deben de comenzar con una letra.
Pueden tener una longitud de 1 30 caracteres de largo.
S.Q.L.
Tipos de Datos
VARCHAR2(tamao)
CHAR(tamao)
NUMBER(p,s)
DATE
LONG
CLOB
RAW(tamao) y LONG
RAW
BLOB
BFILE
S.Q.L.
Creacin de tabla por subconsulta
Se puede crear una tabla e insertar filas combinando el comando CREATE
TABLE con la opcin AS subconsulta.
Es necesario hacer coincidir la cantidad de columnas especificadas con
las de la subconsulta.
Si no se indican nombres de columnas, stas sern los mismos que los de
la subconsulta.
S.Q.L.
Creacin de tabla por subconsulta
Ejemplo:
S.Q.L.
Sentencia ALTER TABLE
S.Q.L.
Aadir una Columna
La nueva columna aparecer en el ltimo lugar de la tabla. No se puede
especificar el orden.
Puede aadir o modificar columnas, pero no eliminarlas de una tabla.
Si la tabla ya contiene registros al aadir una nueva columna, sta se
inicializar con valores nulos para todos los registros.
Puede definir una columna NOT NULL slo si la tabla est vaca.
S.Q.L.
Modificar una Columna
Puede cambiar el tipo de datos de una columna, su tamao y valor por
defecto
Si cambia el valor por defecto, afectar slo a sucesivas inserciones en la
tabla.
S.Q.L.
Sentencia DROP TABLE
S.Q.L.
Sentencia RENAME
TEMA 9
VISTAS
S.Q.L.
Concepto de Vista
Una vista es una tabla lgica basada en una tabla u otra vista.
No contiene datos en s misma, pero es como una ventana a travs de la
cual se pueden ver o cambiar los datos de las tablas.
Podemos representar con ellas subconjuntos lgicos o combinaciones de
datos.
Las tablas sobre las cuales se basa una vista se llaman tablas base.
Se almacenan en el Diccionario de Datos, USER_VIEWS.
S.Q.L.
Por qu usar Vistas?
Para restringir el acceso a la B.D.
Para realizar consultas complejas de manera fcil.
Para obtener una independencia de los datos
Para presentar diferentes vistas de los mismos datos.
S.Q.L.
Creacin de una Vista
FORCE: Crea la vista sin importar que la tabla base exista o no.
WITH CHECK OPTION: Especifica que solamente las filas accesibles a la
vista pueden ser insertadas o actualizadas.
S.Q.L.
Ejemplo creacin de Vista
S.Q.L.
Eliminacin de una Vista
Al borrar una vista no perder los datos, porque la vista est basada en
tablas subyacentes de la B.D.
nicamente el creador o un usuario con el privilegio DROP ANY VIEW
puede eliminar una vista.
S.Q.L.
Limitaciones DML en Vistas
Se pueden realizar operaciones DML sobre vistas simples.
No se puede eliminar una fila si la vista contiene Funciones de grupo, una
clusula GROUP BY o el comando DISTINCT.
No es posible modificar datos en la vista si contiene cualquiera de las
condiciones anteriores, columnas definidas por expresiones o la
pseudocolumna ROWNUM
No se puede agregar datos si la vista contiene cualquiera de las
condiciones anteriores o cualquier columna NOT NULL no incluida por la
S.Q.L.
Creacin de Sinnimos
S.Q.L.
Eliminacin de Sinnimos
TEMA 10
ENTORNO SQL*PLUS
SQL*PLUS
Entorno de ORACLE
SQL*PLUS es una herramienta de Oracle que reconoce y enva sentencias
SQL al servidor Oracle para su ejecucin.
Contiene su propio lenguaje de comandos.
Permite abreviatura de palabras claves de SQL*PLUS.
Permite guardar y recuperar sentencias SQL en archivos.
SQL*PLUS
Conexin a SQL*PLUS
Desde un entorno Windows:
SQL*PLUS
Comandos de Edicin
A[PPEND] texto
C[HANGE] /antiguo /nuevo
C[HANGE] /texto /
CL[EAR] BUFF[ER]
SQL*PLUS
Comandos de Ficheros
SAV[E] nombre_fichero[.ext] [REP[LACE] | APP[END]]
GET nombre_fichero[.ext]
STA[RT] nombre_fichero[.ext]
@nombre_fichero[.ext]
ED[IT] nombre_fichero[.ext]
SPO[OL] [nombre_fichero[.ext] | OFF | OUT]
EXIT
SQL*PLUS
Variables de Sustitucin
Usar variables de sustitucin de SQL*PLUS para almacenar valores en
forma temporal con &variable.
El doble ampersand && para cuando se quiere reutilizar el valor de una
variable sin tener que preguntarle al usuario cada vez.
SQL*PLUS
Uso de variables sustitucin
Use una variable precedida con un ampersand (&) para pedir un valor al
usuario:
SQL*PLUS
Caracteres y Fechas con Var. Sust.
Use comillas simples para fechas y cadenas de caracteres:
SQL*PLUS
Comando SET VERIFY
SET VERIFY { ON | OFF }
Definiendo este parmetro en ON, fuerza a SQL*PLUS a visualizar el texto
de un comando antes y despus de que la variable sea remplazada con
valores:
SQL*PLUS
Variables de Usuario
Se predefinen variables usando uno de los dos comandos SQL*PLUS
siguientes:
o
DEFINE
ACCEPT
Acepta un valor introducido por el usuario y lo
almacena en una variable, adems de permitir introducir
literales
informativos
as
como
definir el tipo de variable.
SQL*PLUS
Comando DEFINE/UNDEFINE
SQL*PLUS
Comando ACCEPT
Crea un prompt personalizado para aceptar datos del usuario.
Define explcitamente una variable de tipo NUMBER o DATE.
Le oculta al usuario el dato que est introduciendo, por razones de
seguridad.
SQL*PLUS
Personalizacin del Entorno
Use comandos SET para controlar la sesin actual.
Verifique los valores que tiene definidos por medio del comando SHOW.
SQL*PLUS
Parmetros del Entorno
ARRAY[SIZE] { 20 | n }
COLSEP { _ | texto }
FEED[BACK] { 6 | n | ON | OFF]
HEA[DING] { OFF | ON }
LIN[ESIZE] {80 | n }
LONG { 80 | n }
PAGES[IZE] { 24 | n }
PAU[SE] { OFF | ON | text }
TERM[OUT] { OFF | ON }
SQL*PLUS
Comandos de Formato
COL[UMN] [opcin_de_columna]
BRE[AK] [ON elemento_del_informe]
TTI[TLE] [texto | OFF | ON]
BTI[TLE] [texto | OFF | ON]
SQL*PLUS
Comando COLUMN
Controla la visualizacin de una columna:
CLE[AR]
FOR[MAT] formato
modelo de formato.
HEA[DING] texto
JUS[TIFY] {alineacin}
centro o derecha.
PRI[NT] / NOPRI[NT]
NUL[L] texto
WRA[PPED]
SQL*PLUS
Elemento
Descripcin
An
Ancho de columna de n
Suprime ceros
Fuerza ceros
Moneda local
Separador de miles
SQL*PLUS
Comando BREAK
Suprime duplicados y secciona registros:
o
Para
suprimir
SQL> BREAK ON ename ON job
Para
producir
SQL> BREAK ON report
Para
seccionar
duplicados:
totales
valores
segn
globales:
la
ruptura:
Limpiar
todas
SQL> CLEAR BREAK
las
definiciones
BREAK:
SQL*PLUS
Comandos TTITLE y BTITLE
Sintaxis de TTITLE y BTITLE:
Definir
cabecera
SQL> TTITLE Informe de|Salarios
Definir
el
pie
SQL> BTITLE Confidencial
de
del
pgina
informe:
del
informe:
TEMA 11
PL/SQL
PL/SQL
Qu es PL/SQL?
Lenguaje de procesamiento procedimental.
Implementado por Oracle.
Dispone de estructuras de programacin similares a las de la mayora de
los lenguajes de programacin.
Objetivo: Interactuar con la B.D.
PL/SQL
Estructura Bloques Annimos
[DECLARE]
Define
objetos
dentro del mismo bloque
PL/SQL
que
BEGIN
Sentencias Ejecutables
[EXCEPTION]
Qu hacer si la accin ejecutada causa error
END;
PL/SQL
Estructura de Procedimiento
PROCEDURE nombre IS
Seccin Declarativa
BEGIN
Seccin Ejecutable
[EXCEPTION]
Seccin de Excepciones
END;
sern
utilizados
PL/SQL
Estructura de Funcin
PL/SQL
Declaracin de Variables
PL/SQL
Asignacin e Inicializacin de Variables
Asignacin:
Inicializacin:
PL/SQL
Tipos de Variables
ESCALARES
BOOLEANAS
COMPUESTAS
LOB
DE ENLACE (BIND)
PL/SQL
Variables Escalares
VARCHAR2 (longitud_mxima)
NUMBER [(precisin, escala)]
DATE
CHAR [(longitud_mxima)]
LONG
LONG RAW
BOOLEAN
BINARY_INTEGER
PL/SQL
Atributo %TYPE
Permite declarar una variable basada en:
o
Ejemplo:
v_ename
emp.ename%TYPE;
PL/SQL
Variables BOOLEANAS
PL/SQL
Tipos de Datos Compuestos
Tipos:
o
REGISTROS PL/SQL
TABLAS PL/SQL
PL/SQL
Creacin de un Registro
Sintaxis:
PL/SQL
Ejemplo de Registro PL/SQL
Declarar un registro para almacenar el nmero de empleado, nombre,
trabajo y sueldo de un nuevo empleado:
PL/SQL
El Atributo %ROWTYPE
PL/SQL
Ventajas de %ROWTYPE
El nmero y los tipos de datos de las columnas de la tabla pueden no ser
conocidos.
Simplifica la programacin al no tener que definir explcitamente los
campos y tipos del registro.
Es til para realizar recuperaciones de filas con la sentencia SELECT:
PL/SQL
Tablas PL/SQL
Cuentan con dos componentes:
o
PL/SQL
Creacin de Tablas PL/SQL
Sintaxis:
Ejemplo:
PL/SQL
Creacin de Tablas PL/SQL
PL/SQL
Variables LOB
Permiten almacenar bloques de datos no estructurados, como pantallas
de texto, imgenes grficas, vdeo clips, y sonido, de hasta 4 Gb. de
tamao.
CLOB
Character Large Object. Se utiliza para almacenar bloques grandes de datos de caracter
BLOB
Binary Large Object. Se utiliza para almacenar objetos binarios grandes en la B.D.
BFILE Binary File. Se utiliza para almacenar objetos binarios grandes en archivos del sistema o
NCLOB
National Language Character Large Object. Se utiliza para almacenar en la B.D. bloques
ancho fijo.
PL/SQL
Variables de Enlace (Bind)
Son variables de SQL*Plus.
Las pueden referenciar bloques de PL/SQL mediante el uso del
ampersand (&).
Ejemplo:
S.Q.L.
Ejercicios
TEMA 12
GENERALIDADES DE PL/SQL
PL/SQL
Generalidades de PL/SQL (I)
Comentarios en PL/SQL:
o
Operadores de PL/SQL:
**, NOT
+, -
*, /
+, -, ||
AND
OR
PL/SQL
Generalidades de PL/SQL (II)
Bloques Anidados y mbito de la Variable:
PL/SQL
Generalidades de PL/SQL (III)
Para hacer referencia a una variable de sustitucin en PL/SQL debe
anteponer a su nombre dos puntos (:) a modo de prefijo:
PL/SQL
Generalidades de PL/SQL (IV)
Directrices de Programacin para facilitar el mantenimiento del cdigo:
PL/SQL
PL/SQL
Sentencias SQL en PL/SQL
SELECT recupera exactamente UNA fila.
INSERT aade una fila.
UPDATE modifica una o ms filas existentes.
DELETE suprime una o ms filas existentes.
COMMIT hace permanentes todas las modificaciones pendientes.
ROLLBACK elimina todas las modificaciones pendientes.
SAVEPOINT marca un punto intermedio en el procesamiento de las
transacciones.
PL/SQL
Sentencia SELECT
Sintaxis:
PL/SQL
Ejemplo de SELECT
PL/SQL
Insercin de Datos
Aada nueva informacin sobre los empleados en la tabla emp:
PL/SQL
Actualizacin de Datos
Aumente el salario de todos los empleados de la tabla emp que son
Analistas:
PL/SQL
Supresin de Datos
Suprima filas pertenecientes al departamento 10 de la tabla emp:
PL/SQL
Control de Transacciones
COMMIT finaliza la transaccin actual realizando todos los cambios
pendientes en la B.D.
PL/SQL
Control de Transacciones
PL/SQL
Control Flujo de Ejecucin
Puede modificar el flujo lgico de sentencias utilizando sentencias IF
condicionales y estructuras de control de bucles.
Sentencias IF condicionales:
o
IF-THEN
IF-THEN-ELSE
IF-THEN-ELSIF
Control de bucles:
o
Bucle FOR
Bucle WHILE
PL/SQL
Sentencia IF
Sintaxis:
PL/SQL
Flujo de IF-THEN-ELSE
PL/SQL
Flujo de IF-THEN-ELSIF
PL/SQL
Condiciones Booleanas
PL/SQL
Bucle Bsico: LOOP
Sintaxis:
NULL).
PL/SQL
Bucle FOR
Sintaxis:
como
un
PL/SQL
Bucle WHILE
Sintaxis:
PL/SQL
Etiquetas y Loops Anidados
Puede anidar bucles a varios niveles.
Utilice etiquetas para distinguir entre los bloques y los bucles.
Salga al bucle externo con la sentencia EXIT que hace referencia a la
etiqueta.
Los nombres de etiquetas deben ir antes de la palabra LOOP y entre
PL/SQL
Etiquetas y Loops Anidados
Ejemplo:
S.Q.L.
Ejercicios Bloques Annimos
Basados en las tablas Emp & Dept del esquema del usuario Scott de
Oracle
Actualizar los vendedores con una comisin mayor que 350$ con un
incremento del 15% de su salario. Si la operacin afecta a mas de tres
empleados, deshacer la transaccin, en cualquier otro caso validar la
transaccin. Informar por pantalla de la operacin realizada.
Insertar en la tabla TEMP 100 filas. En la primera columna se insertar un
ndice secuencial (1, 2, 3...) y en la segunda columna un comentario
indicando si el nmero generado es par o impar.
Actualizar el trabajo a DIRECTOR a todos aquellos empleados cuyo salario
sea mayor que 2000$. Almacenar el nmero de empleados actualizados
por la operacin en la tabla TEMP. Si los afectados son mas de cinco
personas, borrar los empleados cuyo salario sea mayor que 3000$,
insertar en la tabla TEMP el nmero de empleados borrados y validar la
transaccin.
Calcular por medio de un bloque PL/SQL 9i annimo el total de ganancias
de los empleados (salario y comisin) y cuntos de stos tienen un
TEMA 13
CURSORES
PL/SQL
Definicin de Cursor
tiles para las consultas que devuelven ms de una fila.
Son declarados y nombrados por el programador, y manipulados por
medio de sentencias especficas en las acciones ejecutables del bloque.
PL/SQL
Control de Cursores
1. Crear un rea SQL especfica
2. Identificar el juego activo
DECLARE
OPEN
FETCH
CLOSE
PL/SQL
Declaracin del Cursor
Sintaxis:
PL/SQL
Ejemplo de Declaracin
PL/SQL
Apertura del Cursor
Sintaxis:
PL/SQL
Recuperacin de Datos
Sintaxis:
PL/SQL
Cierre del Cursor
Sintaxis:
PL/SQL
Atributos de Cursores
Proporcionan informacin de estado del cursor:
PL/SQL
El Atributo %ISOPEN
Utilice el atributo de cursor %ISOPEN antes de ejecutar una recuperacin
para comprobar si el cursor est abierto.
Ejemplo:
PL/SQL
Atributos %NOTFOUND, %ROWCOUNT
PL/SQL
Ejemplo %NOTFOUND, %ROWCOUNT
Ejemplo:
PL/SQL
Bucles FOR de Cursor
Sintaxis:
PL/SQL
Cursores con Parmetros
Sintaxis:
Permite abrir un cursor varias veces con un juego activo distinto cada
vez.
PL/SQL
Cursores con Parmetros
Cada parmetro formal de la declaracin del cursor debe tener un
parmetro real correspondiente en la sentencia OPEN.
La sintaxis de los parmetros es:
PL/SQL
Cursores con Parmetros
Transfiera el nmero de departamento y el cargo a la clusula WHERE:
PL/SQL
Clusula FOR UPDATE
Sintaxis:
PL/SQL
Clusula WHERE CURRENT OF
Sintaxis:
S.Q.L.
Ejercicios Cursores
TEMA 14
EXCEPCIONES
PL/SQL
Concepto de Excepcin
Qu es una excepcin? Es un identificador de PL/SQL que surge durante
la ejecucin.
Cmo surge? Se produce por un error Oracle o bien puede ser provocada
explcitamente.
Cmo se gestiona? Interrumpindola con un manejador de excepciones
o propagndola al entorno de llamadas.
PL/SQL
Interrupcin de Excepciones
Sintaxis:
PL/SQL
Excepciones de Oracle8
PL/SQL
Excepciones de Oracle8
PL/SQL
Excepciones de Usuario
Se declaran en la seccin declarativa DECLARE.
Se provocan explcitamente en la seccin ejecutable utilizando la
sentencia RAISE.
Se gestiona la excepcin dentro del bloque de excepciones EXCEPTION.
PL/SQL
Excepciones de Usuario
Ejemplo:
PL/SQL
Funciones para Identificar Excepciones
SQLCODE
Devuelve el valor numrico del cdigo de error SQL. No se
puede referenciar directamente, hay que asignarlo a una variable
PL/SQL de tipo NUMBER.
SQLERRM
Devuelve el mensaje asociado con el nmero de error.
Tipo VARCHAR2.
PL/SQL
RAISE_APPLICATION_ERROR
Sintaxis:
PL/SQL
RAISE_APPLICATION_ERROR
Se utiliza en dos lugares distintos:
SECCIN EJECUTABLE
SECCIN DE EXCEPCIONES
Ejemplos:
SQL
Ejercicios
Ejercicios Excepciones
TEMA 15
FUNCIONES PL/SQL
PL/SQL
Definicin de Funcin
Una funcin es un bloque nombrado PL/SQL que devuelve un valor.
Una funcin puede estar almacenada en la B.D., como objeto de la B.D.,
para repetidas ejecuciones.
Una funcin puede ser llamada como parte de una expresin.
PL/SQL
Sintaxis Creacin Funciones
PL/SQL
Creacin de una Funcin
PL/SQL
Desde dnde llamarlas
Como columna de un SELECT.
Condiciones en clusulas WHERE y HAVING.
Clusulas ORDER BY y GROUP BY.
Clusula VALUES de un comando INSERT.
Clusula SET de un comando UPDATE.
PL/SQL
Restricciones en Funciones
No se permiten comandos INSERT, UPDATE o DELETE.
La funcin no puede llamar a otro subprograma que rompa una de las
restricciones arriba indicadas.
PL/SQL
Borrado de Funciones
Para quitar una funcin de la parte del servidor, utilizando SQL*Plus,
ejecutar el comando DROP FUNCTION.
Sintaxis: