Oracle PDF
Oracle PDF
Requerimiento de software
Software Requerimiento
Arquitectura del sistema Procesador: Intel (x64), AMD64
Sistema operativo Windows 2000 con SP1 o posterior,
todas las ediciones.
Windows Server 2003, todas las
ediciones.
Windows XP profesional.
Protocolo de red TCP/IP
Pagina 1
ORACLE
Tipos de instalación
Enterprise Edition: proporciona administración de datos para el sistema de
misión crítica tales como el procesamiento de transacciones en línea (OLTP)
de alto volumen, consultas intensivas en entornos de procesamientos
analíticos en línea (OLAP), y las aplicaciones para internet. Esta edición no
tiene límite en cuanto a la cantidad de procesadores soportados.
Pagina 2
ORACLE
Pagina 3
ORACLE
Pagina 4
ORACLE
Nos pide la ruta donde instalar el programa, si desea puede personalizar, pero
lo dejaremos por defecto.
Pagina 5
ORACLE
Esperamos
Pagina 6
ORACLE
Pagina 7
ORACLE
Pantalla de inicio.
Pagina 8
ORACLE
Pantalla de bienvenida
Pagina 9
ORACLE
SYS
SYSTEM
SYSMAN
La cuenta SYS
El esquema SYS contiene todas las tablas y vistas del diccionario de datos (la
metadata). Estas tablas y vistas son criticas para el funcionamiento de Oracle
database, y no deben ser manipuladas directamente por el administrador.
Debe asegurarse que los usuarios no tengan acceso con esta cuenta.
La cuenta SYSTEM
El esquema SYSTEM almacena tablas y vistas adicionales creadas por las
herramientas de Oracle con propósito administrativo. El esquema SYSTEM no
debe contener las tablas de los usuarios.
La cuenta SYSMAN
Se crea por defecto durante la instalación de Oracle Enterprise Manager. Esta
cuenta debe ser utilizada para realizar tareas poco frecuentes tales como
configuración global del sistema. El usuario SYSMAN es un súper administrador
que crea otras cuentas para la realización de las tareas administrativas
diarias.
Nota: debe crear por lo menos una cuenta adicional con el rol DBA y conceder
los privilegios apropiados para que pueda ejecutar las tareas administrativas
diarias. No utilice las cuentas SYS, SYSTEM y SYSMAN para estos propósitos.
Pagina 10
ORACLE
La instancia de Oracle
A diferencia de otros productos de base de datos en los que por cada instancia
del servidor podemos crear varias bases de datos, por cada instancia de
Oracle se crea solo una base de datos. Por ejemplo en MS SQL Server creamos
en un servidor las bases de datos ventas, producción y personal, en Oracle
creamos una sola base de datos conteniendo los esquemas ventas producción
y personal.
Oracle separa parte de la memoria total del sistema para utilizar en sus
procesos. Es parte de la memoria que Oracle separa y esta formada por:
Pagina 11
ORACLE
Estructura Descripción
Database Buffer La data solicitada por una aplicación para ser consultada
Cache o modificada debe ser leída del disco y almacenada
previamente en la memoria en el buffer cache.
Shared Pool Almacena información que puede ser compartida por los
usuarios:
Sentencia SQL y PL/SQL
Información del diccionario de datos
Redo Log Buffer Almacena información sobre la data actualizada, y que
utilizada por la instancia para actualizar en el momento
oportuno los archivos de registro almacenados
físicamente en el disco.
Large Pool Área opcional utilizada por las solicitudes entrada/salida
muy grandes tales como operaciones de respaldo y
restauración de datos.
Java Pool Utilizada para almacenar código y data especificada a
sesión Java en JVM (Java Virtual Machine).
Streams Pool Utilizado por el producto Oracle Streams.
Pagina 12
ORACLE
Pagina 13
ORACLE
Pagina 14
ORACLE
Pagina 15
ORACLE
Los datafiles son archivos .DBF en los que se almacenan todos los datos
de la base de datos. La base de datos Oracle puede tener uno o más
datafiles.
Archivo de control
Pagina 16
ORACLE
Los archivos Redo Log (.LOG) almacenan las modificaciones de los datos
ejecutadas en la base de datos con la finalidad de recuperarlas en caso
que produjera una falla en el sistema.
Los archivos Archive Log son copias fuera de línea de los archivos Redo
Log. Se usan para recuperar la base de datos en caso de falla del medio de
almacenamiento.
Archivos de parámetros
Pagina 17
ORACLE
Tablespaces
Pagina 18
ORACLE
Pagina 19
ORACLE
Extensiones (Extents)
Segmento (Segment)
Pagina 20
ORACLE
Sintaxis
Pagina 21
ORACLE
Creación de un tablespace
Pagina 22
ORACLE
Creación de un esquema
Concesión de privilegios
Pagina 23
ORACLE
Tipo de datos
Cada constante y variable tiene un tipo de dato en el cual se especifica el
formato de almacenamiento, restricciones y rango de valores validos.
PL/SQL proporciona una variedad predefinida de tipos de datos. Casi todos los
tipos de datos manejados por PL/SQL son similares a los soportados por SQL. A
continuación se muestran os tipos de datos mas comunes.
CHAR (Caracter): Almacena datos de tipo carácter con una longitud máxima
de 32767 y cuyo valor de longitud por default es 1.
Pagina 24
ORACLE
Existen por supuesto más tipos de datos, la siguiente tabla los muestra:
Por ejemplo:
dec(3,1) es un
número que tiene
2 dígitos antes
del decimal y un
dígito después del
decimal.
Por ejemplo:
decimal (3,1) es
un número que
tiene 2 dígitos
antes del decimal
y un dígito
después del
decimal.
double
precision
float
int
integer
numeric(p, e) La precisión La precisión Donde p es la
máxima es de 38 máxima es de 38 precisión y e la
dígitos. dígitos. escala.
Por ejemplo:
numeric(7,2) es
un número que
tiene 5 dígitos
antes del decimal
y 2 dígitos
después del
decimal.
Pagina 25
ORACLE
Por ejemplo:
number(7,2) es
un número que
tiene 5 dígitos
antes del decimal
y 2 dígitos
después del
decimal.
real
smallint
char (tamaño) Hasta 32767 Hasta 32767 Donde tamaño es
bytes en PLSQL. bytes en PLSQL. el número de
caracteres a
Hasta 2000 bytes Hasta 2000 bytes almacenar. Son
en Oracle 8i. en Oracle 9i. cadenas de ancho
fijo. Se rellena
con espacios.
Pagina 26
ORACLE
Por ejemplo:
timestamp(5)
with time zone
Por ejemplo:
timestamp(4)
with local time
zone
Pagina 27
ORACLE
Pagina 28
ORACLE
Pagina 29
ORACLE
Creación de tablas
La instrucción CREATE TABLE
Sintaxis
Creación de tablas
Usted recibe un mensaje de error, el cual indica que usted no cuenta con los
privilegios necesarios para crear las tablas.
Pagina 30
ORACLE
DESCRIBE especialidad;
Laboratorio 01:
Pagina 31
ORACLE
Sintaxis
Pagina 32
ORACLE
Ahora tratemos de añadir una columna de tipo VARCHA2 con la propiedad NOT
NULL.
Usted recibe un mensaje de error, el cual indica que solo puede agregar
columnas con la propiedad NOT NULL cuando la tabla esta vacía.
UPDATE tabla_prueba
SET columna4=’LIMA’
WHERE columna1=’101’;
Pagina 33
ORACLE
Restricciones
Son un método declarativo de definición de la integridad de datos ya que ellas
se definen al momento de crear la tabla con la sentencia (CREATE TABLE) o al
momento de modificar de tabla con la sentencia (ALTER TABLE).
Tipos de restricciones
Las restricciones son un método estándar ANSI para forzar la integridad de los
datos. A continuación los tipos de restricciones.
Sintaxis
Pagina 34
ORACLE
Sintaxis
fk_nombre_tabla_tabla_referenciada: es el nombre de la
restricción clave foranea.
Sintaxis
u_nombre_tabla_nombre_columna: es el nombre de la
restricción valor no duplicado o UNIQUE.
Pagina 35
ORACLE
Sintaxis
Pagina 36
ORACLE
Sintaxis
Eliminación de tablas
Pagina 37
ORACLE
Laboratorio 02:
Pagina 38
ORACLE
Mantenimiento de datos
Una vez de haber creado las tablas de la base de datos se debe cargar la data
lo que normalmente se lleva a cabo desde una aplicación cliente que contiene
formularios para que el usuario puede cargar los datos con facilidad y
comodidad.
Sintaxis
Objeto sequence
Pagina 39
ORACLE
Sintaxis
Pagina 40
ORACLE
Sintaxis
UPDATE nombre_tabla
SET columnaX = expresionX,
columnaP = expresionP, …
WHERE condicion_fila_actualizar
UPDATE curso
SET credito_curso=25
WHERE id_curso=502;
Pagina 41
ORACLE
Sintaxis
Pagina 42
ORACLE
Declaración DML
Trabaja con los datos de la base de datos
instrucción descripción
SELECT selecciona filas y columnas de una o más tablas de la base
de datos.
INSERT añade una nueva fila a una tabla.
UPDATE modifica los datos existentes en una tabla.
DELETE elimina filas de una tabla.
Declaración DDL
Permite crear base de datos, tablas, y tipos de datos definidos por el usuario.
instrucción Descripción
CREATE crea un objeto de la base de datos.
nombre_objeto
ALTER modifica la definición del objeto de la base de datos.
nombre_objeto
DROP elimina un objeto de la base de datos.
nombre_objeto
Declaración DCL
Permite cambiar los permisos o roles asociado con un usuario de la base de
datos.
instrucción descripción
GRANT crea una entrada en la seguridad del sistema que le
permite a un usuario trabajar con los datos o ejecutar
ciertas sentencias.
DENY crea una entrada de seguridad del sistema negando un
permiso de una cuenta de seguridad.
REVOKE quita un permiso previamente concebido o negado
Pagina 43
ORACLE
Operadores
Pagina 44
ORACLE
Laboratorio 03:
Tabla: ESPECIALIDAD
Tabla: CURSO
Tabla: ALUMNO
Pagina 45
ORACLE
Tabla: NOTAS
6. Cambie el crédito del curso a 150 para los cursos LIBRO CAJA y POWER
BUILDER.
8. Mostar las notas de los alumnos que lleven el curso POWER BUILDER.
Pagina 46
ORACLE
12.Mostrar los datos del alumno MARIA ISABEL LOZADA ROJAS de tal forma
que se vea en un solo cuadro.
16.Insertar
un nuevo alumno que tenga la especialidad de COMPUTACION E
INFORMATICA.
Pagina 47
ORACLE
Pagina 48
ORACLE
21.Aumentar con 3
puntos más a
las notas del
EXAMEN
PARCIAL que
estén bajo o igual a 13.
Pagina 49
ORACLE
Pagina 50
ORACLE
Preguntas de investigación
Pagina 51
ORACLE
Consultas simples
Antes de empezar, resuelva el laboratorio 04
Laboratorio 04:
Pagina 52
ORACLE
E-Mail: [email protected]
Pagina 53
ORACLE
La instrucción SELECT
Sintaxis
SELECT * | lista_columnas
FROM nombre_tabla
WHERE condicion_filas
condicion_filas: es una expresión lógica que indica que las filas a mostrar
son aquellas para las que el valor de la expresión es verdadero.
Pagina 54
ORACLE
SELECT COD_PRO,NOM_PRO,COD_LIN,PRE_PRO,(PRE_PRO -
(PRE_PRO * 0.05)) AS "PRECIO CON DSCTO"
FROM PRODUCTO;
Pagina 55
ORACLE Machanay Sulca, Carlos E.
Concatenando cadena.
E-Mail: [email protected]
Pagina 56
ORACLE Machanay Sulca, Carlos E.
Definición de filtros
SELECT
COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT
FROM PRODUCTO
WHERE STO_ACT < 15;
E-Mail: [email protected]
Pagina 57
ORACLE
SELECT
COD_PRO,NOM_PRO,COD_LIN,COD_MAR,PRE_PRO,STO_ACT
FROM PRODUCTO
WHERE PRE_PRO > 3100;
Pagina 58
ORACLE
TO_CHAR(expresión_fecha,’patron_formato_fecha’)
Pagina 59
ORACLE
Operador LIKE
Sintaxis
Comodín Descripción
% indica que en la posición del comodín puede ir cualquier
cadena de caracteres, incluso una cadena nula.
- indica que en la posición del comodín puede ir cualquier
cadena de caracteres, no nulo.
Pagina 60
ORACLE
SELECT
COD_PRO,NOM_PRO FROM PRODUCTO
WHERE NOM_PRO LIKE '%43_';
Sintaxis
SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna BETWEEN valor_inicial AND valor_final
Pagina 61
ORACLE
Pagina 62
ORACLE
Sintaxis
SELECT * | lista_columnas
FROM nombre_tabla
WHERE columna [NOT] IN (conjunto_de_valores)
Busqueda en conjunto de
valores
SELECT
COD_PRO,NOM_PRO,PRE_PRO,STO_ACT FROM PRODUCTO
WHERE COD_PRO IN('P0000010','P0000080','P0000041');
UPDATE PRODUCTO
SET STO_ACT=''
WHERE COD_PRO IN('P0000001','P0000005');
Pagina 63
ORACLE
SELECT COD_PRO,NOM_PRO,PRE_PRO,
STO_MIN,STO_ACT,STO_MIN + STO_ACT AS STOCK FROM
PRODUCTO
WHERE COD_PRO IN('P0000001','P0000005');
Sintaxis
SELECT COD_PRO,NOM_PRO,PRE_PRO,
STO_MIN,NVL(STO_ACT,0),STO_MIN + NVL(STO_ACT,0) AS STOCK
FROM PRODUCTO
WHERE COD_PRO IN('P0000001','P0000005');
Pagina 64
ORACLE
Pagina 65
ORACLE
Laboratorio 05:
Pagina 66
ORACLE
5. Mostrar todos los productos que empiece con la letra T, y que tenga en
stock de 1 a 15 unidades.
7. Mostrar todos los productos que empiece con la letra TV y que sean de
la marca MIRAY.
Pagina 67
ORACLE
10.Mostrar todos los clientes que tenga los siguientes códigos: C0000001,
C0000018, C0000020.
Preguntas de investigación.
11.Mostrar todos los clientes que al inicio de sus datos sea mayúscula, y
que tenga la letra Z.
12.Elevar a la potencia 5 ^ 2.
Pagina 68
ORACLE
Funciones ORACLE
Funciones numérica
Ejemplo
POWER (expresionNumerica, n)
Retorna el resultado de elevar expresionNumerica a la potencia n.
Ejemplo
Ejemplo
Pagina 69
ORACLE
SQRT (expresionNumerica)
Retorna la raiz cuadrada de expresionNumerica.
Ejemplo
Ejemplo
Funciones Cadena
Ejemplo
INITCAP (expresionCadena)
Retorna expresionCadena con la inicial de cada palabra mayúscula.
Ejemplo
Pagina 70
ORACLE
LENGTH (expresionCadena)
Retorna longitud de expresionCadena.
Ejemplo
LOWER (expresionCadena)
Retorna expresionCadena, pero todo en minúscula.
Ejemplo
Ejemplo
Ejemplo
Pagina 71
ORACLE
Ejemplo
Ejemplo
UPPER (expresionCadena)
Retorna expresionCadena, pero todo en mayúscula.
Ejemplo
Pagina 72
ORACLE
ADD_MONTHS (expresionFecha,n)
Incrementa expresionFecha en n meses y genera una nueva fecha.
Ejemplo
YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
Ejemplo
LAST_DAY (expresionFecha)
Entrega la fecha del último día del mes especificado:
Ejemplo
Pagina 73
ORACLE
Ejemplo
Ejemplo
Ejemplo
Pagina 74
ORACLE
Elemento Descripción
DL formato de fecha largo.
DS formato de fecha corto.
DAY nombre del dia de la semana.
DY nombre abreviado del dia de la semana.
D dia de la semana(1 - 7)
DD dia del mes (1 - 31)
DDD dia del año (1 - 365)
MONTH nombre del mes.
MON nombre abreviado del mes.
MM mes del año (01 - 12)
YYYY año con 4 dígitos.
YY año con 2 digitos.
HH hora del dia (1 - 12)
HH24 hora del dia (0 - 23)
MI minutos (0 - 59)
SS segundos (0 – 59)
TS formato de hora.
Ejemplo
Pagina 75
ORACLE
Ejemplo
Otras funciones
USER
Entrega nombre del usuario en la sesión actual.
Pagina 76
ORACLE
Laboratorio 06:
Pagina 77
ORACLE
Funciones de agregación y
agrupamiento de datos
Funciones de agregación
Son funciones que permite efectuar una operación aritmética que resume los
valores de una columna de toda la tabla o que resume los valores de una
columna agrupados según determinado criterio.
Función Descripción
AVG() Retorna el promedio de los valores de una columna o
expresión.
COUNT() Retorna la cuenta del número de filas de una consulta.
MAX() Retorna el valor máximo de una columna o expresión.
MIN() Retorna el valor mínimo de una columna o expresión.
SUM() Retorna la suma de los valores de una columna o expresión.
Sintaxis
Pagina 78
ORACLE
Ejemplo: Obtener el stock promedio de los productos cuyo precio sea mayor
a 600.
Sintaxis
COUNT (Expresion) Ignora los valores NULL de expresión; COUNT (*) se utiliza
para contar filas, por lo que no ignora los valores NULL.
Pagina 79
ORACLE
Sintaxis
MAX (Expresión)
MIN (Expresión)
Expresión: indica los valores para los que se debe hallar el máximo y
mínimo valor.
Pagina 80
ORACLE
Sintaxis
Pagina 81
ORACLE
Cláusula GROUP BY
Sintaxis
Una consulta GROUP BY solo entrega una fila por cada grupo
generado. Esta fila muestra el resultado de la funcion_agregacion
aplicada sobre el grupo. No muestra el contenido del grupo.
Pagina 82
ORACLE
Pagina 83
ORACLE
Permite que una sola consulta GROUP BY se presente grupos formados por
distintas combinaciones de atributos.
Pagina 84
ORACLE
Pagina 85
ORACLE
Laboratorio 07:
4. Mostrar el total del stock de los productos por línea que sea menor a
150 unidades.
5. Mostrar el precio total de las líneas de productos que estén entre 1000
a 6000 soles.
Pagina 86
ORACLE
11.Mostrar los productos, donde realice cálculo del precio por cantidad (5
unidades) me da el importe, donde muestre los productos cocina y que
el importe sea mayor a 3000 soles y que sea de la marca INDURAMA.
Pagina 87
ORACLE
Consultas multitablas
Consultas correlacionadas
Sintaxis
SELECT lista_columnas
FROM tabla1
tipo_join JOIN tabla2 ON condicion_del_join
INNER JOIN
OUTER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
CROSS JOIN
INNER JOIN.
Un INNER JOIN es la consulta correlacionada que combina todas las filas que
están relacionadas de las dos tablas o conjunto de filas.
Pagina 88
ORACLE
Mostrar los nombres de los distritos de la tabla cliente que vivan en LIMA.
SELECT CLIENTE.COD_CLI AS
CODIGO,CLIENTE.RAZON_SOCIAL,CLIENTE.RUC_CLI AS
RUC,DISTRITO.NOM_DIS AS DISTRITO FROM CLIENTE
INNER JOIN DISTRITO ON CLIENTE.COD_DIS=DISTRITO.COD_DIS
WHERE DISTRITO.NOM_DIS='LIMA';
Pagina 89
ORACLE
SELECT COMPROBANTE.NUM_COMP AS
NUMERO,TIPOCOMPROBANTE.NOM_TIC AS
COMPROBANTE,COMPROBANTE.FECHA_EMISION AS FECHA,
SUM(DETALLE.PRECIO * DETALLE.CANT) AS IMPORTE
FROM COMPROBANTE
INNER JOIN DETALLE ON
COMPROBANTE.NUM_COMP=DETALLE.NUM_COMP
INNER JOIN TIPOCOMPROBANTE ON
COMPROBANTE.COD_TIC=TIPOCOMPROBANTE.COD_TIC
GROUP BY
COMPROBANTE.NUM_COMP,TIPOCOMPROBANTE.NOM_TIC,COMP
ROBANTE.FECHA_EMISION
HAVING COMPROBANTE.NUM_COMP='CP00000004';
Pagina 90
ORACLE
Es una consulta correlacionada que combina cada una de la filas de una de las
tablas con cada una de las filas de la otra tabla.
Pagina 91
ORACLE
SELECT
MARCA.COD_MAR,MARCA.NOM_MAR,PRODUCTO.COD_PRO,PROD
UCTO.NOM_PRO FROM MARCA
CROSS JOIN PRODUCTO;
Operador UNION
Sintaxis
Sentencia_SELECT_1
UNION [ALL]
Sentencia_SELECT_2
UNION [ALL]
Sentencia_SELECT_3
Use el operador UNION cuando los datos que desea recuperar residen en
diferentes localizaciones y no puede acceder a ellos con una sola consulta.
Cuando use el operador UNION considere los siguiente.
SQL Server requiere que las consultas a las tablas referenciadas tenga
el mismo número de columnas, los mismos tipos de datos, y que las
columnas se encuentren en el mismo orden en la lista de cada uno de
los SELECT.
Pagina 92
ORACLE
Pagina 93
ORACLE
Para explicar como trabaja el operador UNION ALL y además los operadores
INTERSECT y MINUS, vamos a crear dos pequeñas tablas con algunos datos.
Insertando 5 registros
Insertando 2 registros
Ejecución de UNION
Pagina 94
ORACLE
Pagina 95
ORACLE
El operador MINUS construye una relación de filas formado por las filas que
aparecen en el primer conjunto, pero que no aparecen en el segundo
conjunto.
Consulta AUTOJOIN
Para generar un ejemplo crearemos una tabla que tenga autorelacion. Esta
tabla contiene clave foránea que apunta a la clave primaria en la misma
tabla.
Pagina 96
ORACLE
Insertando 7 registros.
Ejemplo: crear una consulta que muestre una lista de trabajadores. La lista
debe mostrar apellidos del jefe de cada trabajador.
Pagina 97
ORACLE
Subconsultas
Test de pertenencia
Pagina 98
ORACLE
Pagina 99
ORACLE
Sintaxis
Inserción de filas.
Pagina 100
ORACLE
Laboratorio 08:
Pagina 101
ORACLE
5. Mostrar todos los clientes que todavía no han generado alguna compra.
9. Mostrar el total del precio por cada línea, que sea mayor a los 4000.
Pagina 102
ORACLE
Pagina 103
ORACLE
Pagina 104
ORACLE
23.Modificar los apellidos, nombres del cliente CLINICA SAN LUCAS S.A.
Pagina 105
ORACLE
25.Mostrar los productos que sean de la línea LINEA BLANCA, y que el stock
este entre 10 y 20.
Pagina 106
ORACLE
Pagina 107
ORACLE
Las vistas
Una vista es un objeto que almacena una consulta predefinida y que
proporciona un modo alternativo de visualización de datos sin tener que
redefinir la consulta.
Ejemplo:
Antes de poder crear una vista debemos conceder los permisos necesarios
para crear una vista.
Ejemplo de vista
Pagina 108
ORACLE
Observe que para ejecutar la vista se utiliza la instrucción SELECT. Una vista
se manipula como si fuera una tabla; es decir, que se puede aplicar las
declaraciones SELECT, INSERT, UPDATE y DELETE. Sin embargo, no debe ver la
vista como una tabla, sino pensar en ella como un programa que ejecuta una
sola instrucción.
Sintaxis:
OR REPLACE indica que si la vista ya existe, debe ser remplazada por la nueva
definición de la tabla.
WITH READ ONLY indica que la vista solo permite consultas solo se
puede ejecutar SELECT sobre la vista, y no puede ejecutarse INSERT, UPDATE
ni DELETE.
Pagina 109
ORACLE
Sintaxis:
Ejemplo de vista
Pagina 110
ORACLE
Laboratorio 09:
Pagina 111
ORACLE
Fundamentos de PL/SQL
SQL es un lenguaje de consulta para los sistemas de bases de datos
relaciónales, pero que no posee la potencia de los lenguajes de programación.
No permite el uso de variables, estructuras de control de flujo, bucles... y
demás elementos característicos de la programación. No es de extrañar, SQL
es un lenguaje de consulta, no un lenguaje de programación.
Bloque anónimo
Procedimientos almacenados
Funciones
Triggers
Paquetes
Pagina 112
ORACLE
Bloque anónimo
Es la unidad básica de la programación en PL/SQL.
Sintaxis:
DECLARE
BEGIN
EXECEPTION
END;
DECLARE
V_FECHA DATE;
BEGIN
SELECT SYSDATE INTO V_FECHA FROM DUAL;
dbms_output.put_line('FECHA : ' || V_FECHA);
END;
Pagina 113
ORACLE
Pagina 114
ORACLE
Laboratorio 10:
Pagina 115
ORACLE
Declaración de variables
Son elementos de lenguajes que se define en la memoria del sistema a los que
se pueden asignar valores para luego usarlos posteriormente.
Sintaxis
nombre_variable tipo_dato
[CONSTANT] [NOT NULL] [:=Valor];
Ejemplo:
Uso de %TYPE
Este operador permite declarar una variable del mismo tipo que la otra
variable constante o columna.
Sintaxis
nombre_variable identificador%type;
Ejemplo:
Pagina 116
ORACLE
Sintaxis
nombre_variable :=valor;
Ejemplo:
Sintaxis
Ejemplo:
Pagina 117
ORACLE
Procedimiento
Un bloque se puede almacenar como un objeto de la base de datos de modo
de modo que se puede ejecutar repetidamente invocándolo con la instrucción
EXECUTE. El bloque se puede almacenar como procedimiento o función.
Sintaxis
BEGIN
EXECEPTIONS
END;
Pagina 118
ORACLE
Ejemplo:
BEGIN
END;
EXECUTE USP_MONTO_COMPROBANTE('CP00000002');
Pagina 119
ORACLE
Función
Una función es similar a un procedimiento con la diferencia que la función
retorna siempre un valor.
Sintaxis:
BEGIN
EXECEPTIONS
END;
Pagina 120
ORACLE
Ejemplo:
BEGIN
END;
Pagina 121
ORACLE
Laboratorio 11:
1. Crear una vista donde muestre los continentes de los proveedores, solo
mostrar los proveedores que sean de los continentes ASIA y EUROPA.
2. Crear un bloque anónimo donde pueda insertar una nueva línea, donde
el código de la línea se tiene que incrementar.
Pagina 122
ORACLE
El condicional IF
Sintaxis:
IF (expresión_logica) THEN
END IF;
Sintaxis:
IF (expresión_logica) THEN
ELSE
END IF;
Pagina 123
ORACLE
Sintaxis:
IF (expresión_logica1) THEN
ELSE
END IF;
Pagina 124
ORACLE
Ejemplo:
Crear una función que evalué el stock actual del producto, comparando con el
stock mínimo.
END;
Pagina 125
ORACLE
El condicional CASE
Sintaxis:
CASE selector
WHEN valor1 THEN
ELSE
END CASE;
Sintaxis:
CASE selector
WHEN expression_logica1 THEN
ELSE
END CASE;
Pagina 126
ORACLE
Ejemplo:
Consulta muestra una lista de los proveedores con una columna computada
cuyo valor depende del valor encontrado en columna PAIS de la tabla
proveedor.
SELECT COD_PRV,RAZON_SOCIAL,
CASE PAIS
WHEN 'ESPAÑA' THEN 'CONTINENTE EUROPEO'
WHEN 'CHINA' THEN 'CONTINENTE ASIATICO'
WHEN 'MEXICO' THEN 'CONTINENTE AMERICANO'
ELSE
'FALTA ESTABLECER'
END AS CONDICION
FROM PROVEEDOR;
Pagina 127
ORACLE
Ejemplo:
SELECT P.COD_PRO,P.NOM_PRO,
CASE
WHEN SUM(D.CANT) < 20 THEN 'NIVEL MUY BAJO, < 20
UNIDADES'
WHEN SUM(D.CANT) >=20 AND SUM(D.CANT) < 35 THEN 'NIVEL
BAJO, < 20 UNIDADES'
END AS CONDICION
FROM PRODUCTO P
LEFT OUTER JOIN DETALLE D ON P.COD_PRO=D.COD_PRO
WHERE P.COD_LIN='L002'
GROUP BY P.COD_PRO,P.NOM_PRO;
Pagina 128
ORACLE
Ejemplo:
Función que establece si el precio del producto esta por encima o por debajo
del precio promedio de todos los productos.
CASE
WHEN (N_PRE_PRO > N_PRE_PRO_PROM) THEN
V_MENSAJE := 'PRECIO POR ENCIMA DEL PROMEDIO';
WHEN (N_PRE_PRO = N_PRE_PRO_PROM) THEN
V_MENSAJE := 'PRECIO PROMEDIO';
WHEN (N_PRE_PRO < N_PRE_PRO_PROM) THEN
V_MENSAJE := 'PRECIO POR DEBAJO DEL PROMEDIO';
END CASE;
V_MENSAJE := 'PRODUCTO: ' || C_COD_PRO || ' ' ||
TO_CHAR(N_PRE_PRO) || ' - ' || V_MENSAJE;
RETURN V_MENSAJE;
END;
Pagina 129
ORACLE
Pagina 130
ORACLE
El parámetro esta inicializado con valor NULL. Remplace este por el código
del producto.
El bucle LOOP
Pagina 131
ORACLE
Sintaxis:
LOOP
IF (expresion_logica) THEN
EXIT
END IF;
END LOOP;
Ejemplo:
El bucle WHILE
Pagina 132
ORACLE
Sintaxis:
END LOOP;
Ejemplo:
Usaremos un bucle WHILE para insertar filas en una tabla que tiene una llave
primaria numérica cuyo valor es generado automáticamente por el sistema.
Para ello haremos uso del objeto secuencia.
Pagina 133
ORACLE
EXECUTE PRCARGARTABLA(5);
El bucle FOR
Sintaxis:
END LOOP;
Ejemplo:
Pagina 134
ORACLE
EXECUTE PRINSERTAR_FILAS(6);
Ejemplo:
Pagina 135
ORACLE
EXECUTE PRTABLAMULTIPLICAR(10);
Pagina 136