Вы находитесь на странице: 1из 103

JOSE JUAN GARCIA BORQUEZ

JOSE JUAN GARCIA BORQUEZ
11 DE FEBRERO DEL 2013
11 DE FEBRERO DEL 2013

11 DE FEBRERO DEL 2013

ÍNDICE

INTRODUCCION

INFORMACION INSTITUCIONAL

ACTIVIDADES EN CLASE

MATERIAL DE APOYO

TAREAS REALIZADAS

CONCLUCION

INSTRUMENTOS DE EVALUACION

FIN

EN CLASE  MATERIAL DE APOYO  TAREAS REALIZADAS  CONCLUCION  INSTRUMENTOS DE EVALUACION 

INTRODUCCION

El alumno conocerá y utilizará el lenguaje SQL,

para organizar, administrar y consultar datos

almacenados en una computadora.

El alumno será capaz de planear y administrar una base de datos.

El alumno será capaz de resolver problemas que tengan que ver con el uso de PL/SQL y MySQL

El alumno tendrá herramientas para una mejor organización y control de sus recursos.

atrás
atrás

INFORMACION INSTITUCIONAL

Misión

La misión de UNIDEP es formar profesionales de éxito que cuenten con las actitudes, habilidades y

conocimientos que demanda el sector productivo de la región.

Visión

La Universidad del Desarrollo Profesional es una institución de educación superior de calidad, que ofrece programas presenciales y semipresenciales de bachillerato, profesional asociado, licenciatura, posgrado, diplomados y cursos en México y en el extranjero.

Se distingue por facilitar a sus egresados la incorporación al mercado de trabajo, apoyada en una estrecha vinculación con el sector productivo y en planes de estudio pertinentes y dinámicos.

Es reconocida por su modelo educativo profesionalizante, por la flexibilidad de su oferta académica impartida en ciclos continuos y por horarios y cuotas accesibles, acordes a la disponibilidad de tiempo y

recursos económicos del alumno.

Cuenta con profesores de amplia experiencia profesional y educativa. Sus instalaciones dentro de la ciudad permiten el fácil acceso.

Cuenta con un modelo de administración sistematizado, participativo, operado por personal que es recompensado por su desempeño efectivo que le permite maximizar las aportaciones de sus socios y mantener finanzas sanas.

atrás
atrás

UNIVERSIDAD DEL DESARROLLO PROFESIONAL

Perfil Descriptivo de Clase Materia: BASE DE DATOS III Ciclo: 201325 Maestro: M.C. JOSÉ BENITO
Perfil Descriptivo de Clase
Materia:
BASE DE DATOS III
Ciclo:
201325
Maestro:
M.C. JOSÉ BENITO FRANCO URREA
Horario:
13:00-15:00 pm
 Conocerá y utilizará el lenguaje SQL, para organizar, administrar y consultar
datos almacenados en una computadora.
Objetivo del
 Será capaz de planear y administrar una base de datos.
Curso:
 Será capaz de resolver problemas que tengan que ver con el uso de PL/SQL y
MySQL
 Tendrá herramientas para una mejor organización y control de sus recursos.
TIPO
TITULO
AUTOR
EDITORIAL/REVISTA
AÑO
Bibliografía:
LIBRO
FUNDAMENTOS DE
BASE DE DATOS
Abraham Silberschatz
Bell Laboratories
Henry F. Korth
Bell Laboratories
S. Sudarshan
Instituto Indio de
Tecnología, Bombay.
McGRAW-HILL
2002
.
LIBRO
DISEÑO Y
ADMINISTRACIÓN DE
BASE DE DATOS.
Gary W. Hansen
Prentice- Hall
2003
James V. Hansen
LIBRO
SISTEMA DE BASE
RAMEZ ELMASRI/NAVATH
ADDISON
2001
DE DATOS.
E
criterios para
CALIFICACIÓN ORDINARIA (PONDERACIÓN)
la Evaluación
Actividades
30%
Examen primer parcial.
15%
semanales
Portafolio
10%
Examen segundo parcial.
25%
reaprendizaje
Trabajos
20%
T O T A L
independientes
100%
Reglas
1. El alumno es responsable de enterarse de su número de faltas y retardos.
2. El alumno debe contar con un mínimo del 80% de asistencia para tener derecho a su calificación final.

4.

Es responsabilidad del estudiante hablar inmediatamente con el maestro cuando tenga problemas con el

material de clase, sus calificaciones, etc. De esta manera evitaremos problemas en el fin del ciclo.

5.

Sólo se justifican inasistencias si son autorizadas por la coordinación académica bajo el procedimiento

correspondiente

6. Se tomara asistencia al iniciar la clase.

7. Prohibido utilizar teléfonos celulares y/o aparatos electrónicos dentro del aula.

8. La clase es de 100 minutos efectivos.

9. La clase inicia a la hora en punto

10. No se permiten alimentos ni bebidas dentro del aula.

11. Deberá presentar su Carnet de Pago, expedido por su coordinador administrativo, para la autorización
11. Deberá presentar su Carnet de Pago, expedido por su coordinador administrativo, para la autorización de recepción de trabajos finales
y la aplicación de exámenes en la última semana del módulo.
Calendarización
Sesión
Fecha
Tema
Presentación del programa, Introducción al tema, Integración de equipos,
1 14/01/2013
Asignación de proyecto final. Revisión de herramientas disponibles en laboratorio
de cómputo, diagnóstico de conocimientos del grupo.
1. Programación pl/sql , declaración de variables.
1.1 Estructura de un bloque PL/SQL.
1.2 Tipos de Bloques.
1.3 Uso de variables.
1.4 Manejo de variables PL/SQL.
2 15/01/2013
1.5 Tipos de Variables.
1.6 Declaración de Variables.
1.7 Asignación. Inicialización de Variables y palabras claves.
1.8 Referenciando variables que no son de PL/SQL.
1.9 Ejercicios Prácticos.
Avance del proyecto Final
2. Escribiendo comandos ejecutables
2.1 Líneas maestras para escribir un bloque PL/SQL.
2.2 Comentarios.
3 16/01/2013
2.3 Funciones SQL en PL/SQL: Conversión de tipos, Mezclando bloques y
ámbito de variables, Operadores en PL/SQL.
2.4
Ejercicios Prácticos.
Avance del proyecto
Revisión de los ejercicios de Prácticas y dudas de los temas.
Exposición del equipo #1: RESTRICCIONES DE INTEGRIDAD EN LAS BASES DE
DATOS.
4 17/01/2013
Entrega del reporte de lectura del tema investigado en internet.
3. Interactuando con Oracle server
3.1 Comando SQL en PL/SQL.
3.2 Recuperación de datos en PL/SQL.
3.3 Insertando datos en PL/SQL. Borrando datos en PL/SQL.
5 21/01/2013
3.4 Actualizando datos en PL/SQL.
3.5 COMMIT Y ROLLBACK.
3.6 Cursores.
3.7 Ejercicios Prácticos.
Avance del proyecto final.
4. Estructuras de control.
6 22/01/2013
4.1 Comando IF.
4.2 Comando IF-THEN-ELSE.
     

4.3 Comando IF-THEN-ELSIF.

4.4 Condiciones Booleanas.

4.5 Bucles: LOOP, WHILE, FOR.

4.6 Ejercicios prácticos.

   

Revisión de los ejercicios de Prácticas y dudas de los temas. Exposición del equipo #2: seguridad de Base de Datos.

7 23/01/2013

Entrega del reporte de lectura del tema investigado en internet.

 

8 24/01/2013

Revisión de avance del proyecto final y la información del portafolio.

   

5. Cursores.

 
 

5.1 Tipos de Cursores.

5.2 Declaración.

9 28/01/2013

5.3 Operaciones con cursores.

5.4 Variables aplicables.

5.5 Ejercicios Prácticos.

Avance del proyecto final

   

6. Cursores explícitos avanzados.

 

6.1 Cursores con parámetros.

6.2 Cláusula FOR UPDATE.

10 29/01/2013

6.3 Cláusula WHERE CURRENT OF.

6.4 Cursor con Subconsultas.

6.5 Ejercicios Prácticos.

Avances del proyecto final

   

Revisión de los ejercicios de Prácticas y dudas de los temas.

Exposición del equipo #3: Base de Datos distribuida y Arquitectura cliente servidor.

11 30/01/2013

Entrega del reporte de lectura del tema investigado en internet.

 

12 31/01/2013

EXAMEN PRIMER PARCIAL

   

7.

Sql avanzado

7.1

OPERADORES DE CONJUNTOS

 

7.1.1 Tipos.

7.1.2 INTERSET.

13 04/02/2013

7.1.3 UNIÓN/UNIÓN ALL.

   

7.1.4 MINUS.

7.1.5 Ejercicios Prácticos.

Avance proyecto final

   

1.1

Subconsultas correlacionadas.

 

1.1.1 Concepto.

1.1.2 Usando Subconsultas Correladas.

14 05/02/2013

1.1.3 EXISTS. NOT EXISTS.

   

1.1.4 Ejercicios Prácticos.

Avance del proyecto final

   

8.

Bases de datos con MySQL.

15 06/02/2013

8.1 Introducción a MySQL.

8.2 Formas de uso de MySQL.

   

1.1

Administración de bases de datos en MySQL.

16 07/02/2013

 

1.2

Optimización de bases de datos en MySQL.

   
   

Entregar reporte de lectura del tema de clasificación de los sistemas de gestión

17 11/02/2013

de base de datos.

Revisión de proyecto Final y portafolio.

 

18 12/02/2013

Entrega y revisión práctica del proyecto final y portafolio.

 

19 13/02/2013

EXAMEN SEGUNDO PARCIAL

 

20 14/02/2013

ENTREGA DE CALIFICACIONES ORDINARIAS

   

EXAMEN EXTRAORDINARIOS

Ejercicios 17 de enero del 2013

Ejercicios 17 de enero del 2013

EJERCICIOS 22 DE ENERO

E JERCICIOS 22 DE ENERO

1

EJERCICIOS 23 DE ENERO

2

1 E JERCICIOS 23 DE ENERO 2

3

EJERCICIOS 23 DE ENERO

3 E JERCICIOS 23 DE ENERO
3 E JERCICIOS 23 DE ENERO

1

EJERCICIOS 24 DE ENERO

2

1 E JERCICIOS 24 DE ENERO 2

3

EJERCICIOS 24 DE ENERO

4

3 E JERCICIOS 24 DE ENERO 4

1

EJERCICIOS 28 DE ENERO

2

1 E JERCICIOS 28 DE ENERO 2

3

EJERCICIOS 28 DE ENERO

4

3 E JERCICIOS 28 DE ENERO 4

5

EJERCICIOS 28 DE ENERO

6

5 E JERCICIOS 28 DE ENERO 6

7

EJERCICIOS 28 DE ENERO

8

7 E JERCICIOS 28 DE ENERO 8

1

EJERCICIOS 29 DE ENERO

2

1 E JERCICIOS 29 DE ENERO 2

1

EJERCICIOS 31 DE ENERO

2

1 E JERCICIOS 31 DE ENERO 2

Clausula WHERE CURRENT OF

José Juan Garcia Borquez ID: 25122003

Esta clausula se utiliza en la instrucción SELECT cuando se acompaña de la clausula FOR UPDATE en cursor de Actualización el cual hace que solo se modifiquen los registros actuales del cursor.

ACCEPT eldepa PROMPT 'DIGITE EL NUMERO DE DEPARTAMENTO'

DECLARE

v_ndepa VARCHAR2(4) := TO_CHAR('&eldepa');

CURSOR cpuestos(v_departamento IN VARCHAR2) IS

SELECT N_DPTO, NOMBRE, AP_PATERNO, PUESTO, TO_CHAR(SUELDO)

FROM EMPLEADOS WHERE N_DPTO = v_departamento FOR UPDATE;

v_ndpto VARCHAR2(5);

v_nombre varchar2(20);

v_paterno VARCHAR2(20);

v_puesto varchar2(40);

v_sueldo varchar2(15);

v_aumento number(7,2);

BEGIN

OPEN cpuestos(v_ndepa);

LOOP

fetch cpuestos into v_ndpto, v_nombre, v_paterno, v_puesto, v_sueldo;

exit when cpuestos%NOTFOUND;

update empleados set sueldo = v_sueldo+1000 where CURRENT of cpuestos;

DBMS_OUTPUT.put_line(v_ndpto || ' ' || to_char(v_sueldo) || '

' ||

v_nombre || ' ' || v_paterno || ' ' || v_puesto);

end loop;

close cpuestos;

end;

José Juan Garcia Borquez ID: 25122003

Cursor con subconsulta

Cursor que ejecuta una subconsulta seleccionando al empleado con sueldo máximo sueldo en la nomina.

declare

cursor cpuestos is

select N_DPTO, NOMBRE, AP_PATERNO, PUESTO, TO_CHAR(SUELDO)

FROM EMPLEADOS WHERE empleados.sueldo = (select max (empleados.sueldo) from empleados);

v_ndpto varchar2(5);

v_nombre varchar2(20);

v_paterno varchar2(20);

v_puesto varchar2(40);

v_sueldo varchar2(15);

BEGIN

OPEN cpuestos;

loop

fetch cpuestos into v_ndpto, v_nombre, v_paterno, v_puesto, v_sueldo;

exit when cpuestos%NOTFOUND;

DBMS_OUTPUT.put_line(v_ndpto || ' ' || to_char(v_sueldo) || '

' ||

v_nombre || ' ' || v_paterno || ' ' || v_puesto);

end loop;

close cpuestos;

end;

UNION

Devuelve la suma de dos o más conjuntos de resultados. El conjunto obtenido como resultado de unión tiene la misma estructura que los conjuntos originales.

SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM ALUMNOS UNION

SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM EMPLEADOS;

INTERSECT

José Juan Garcia Borquez ID: 25122003

Le da los registros que se encuentran en ambas consultas al eliminar las filas que solo se encuentran en una u otra consulta.

SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM ALUMNOS INTERSECT

SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM EMPLEADOS;

MINUS

Le da los registros que se encuentran en la primera consulta y no en la segunda consulta mediante la eliminación de los resultados de todas las filas que se encuentran solo en la segunda consulta.

SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM ALUMNOS MINUS

SELECT NOMBRE, AP_PATERNO, AP_MATERNO FROM EMPLEADOS;

MATERIAL DE APOYO

atrás
atrás

1.

Programación PL/SQL, declaración de variables.

Objetivos:

Reconocer las bases del bloque PL/SQL y sus secciones.

Describir el significado de las variables en PL/SQL

Distinguir entre variables PL/SQL y no PL/SQL.

Declarar variables PL/SQL

Ejecutar un bloque PL/SQL

PL/SQL proviene de Procedural Language (lenguaje procedural)/ Structured Query Language (Lenguaje de consulta estructurado). PL/SQL ofrece un conjunto de comandos procedurales (sentencias IF, bucles, asignaciones), organizado dentro de bloques (como se explica más adelante), que complementan y amplían el alcance de SQL.

• SQL*PLUS: es una herramienta de programación y consulta que permite a los

usuarios la manipulación directa de la información de la base de datos usando el

lenguaje SQL.

la información de la base de datos usando el lenguaje SQL. Privilegios de Sistema y de

Privilegios de Sistema y de Objetos

En Oracle existen dos tipos de privilegios de usuario.

4.1 System: Que permite al usuario hacer ciertas tareas sobre la BD, como por ejemplo crear un Tablespace. Estos permisos son otorgados por el administrador o por alguien que haya recibido el permiso para administrar ese tipo de privilegio.

En general los permisos de sistema, permiten ejecutar comandos del tipo DDL (Data definition Language), como CREATE, ALTER y DROP.

Entre todos los privilegios de sistema que existen, hay dos que son los importantes: SYSDBA y SYSOPER. Estos son dados a otros usuarios que serán administradores de base de datos.

M.C. JOSÉ BENITO FRANCO URREA

Para otorgar varios permisos a la vez, se hace de la siguiente manera:

SQL> GRANT CREATE USER, ALTER USER, DROP USER TO bfranco;

4.2 Object: Este tipo de permiso le permite al usuario realizar ciertas acciones en objetos de la BD, como una Tabla, Vista, un Procedure o Función, etc. Si a un usuario no se le dan estos permisos sólo puede acceder a sus propios objetos (véase USER_OBJECTS). Este tipo de permisos los da el owner o dueño del objeto, el administrador o alguien que haya recibido este permiso explícitamente (con Grant Option).

Create Tablespace

Sirve para crear un tablespace.

Un tablespace es una unidad lógica de almacenamiento dentro de una base de datos oracle.

Es un puente entre el sistema de ficheros del sistema operativo y la base de datos.

Cada tablespace se compone de, al menos, un datafile y un datafile solo puede pertenecer a un tablespace.

Cada tabla o indice de oracle pertenece a un tablespace, es decir cuando se crea una tabla o indice se crea en un tablespace determinado.

Sintaxis:
Sintaxis:

CREATE [UNDO] TABLESPACE tablespace_name

DATAFILE Datafile_Options Storage_Options ;

Datafile_Options:

'filespec' [AUTOEXTEND OFF]

'filespec' [AUTOEXTEND ON [NEXT int K | M] [MAXSIZE int K | M]]

La opción Autoextend Maxsize es por defecto UNLIMITED si no se especifica valor.

Storage_Options:

BLOCKSIZE int K LOGGING | NOLOGGING FORCE LOGGING ONLINE | OFFLINE PERMANENT | TEMPORARY EXTENT MANAGEMENT {DICTIONARY | LOCAL {AUTOALLOCATE | UNIFORM [SIZE int K | M]} } SEGMENT SPACE MANAGEMENT {MANUAL | AUTO}

Explicación de la sintaxis utilizada para los comandos:

Las palabras en mayúsculas son comandos de oracle. Las palabras en minúsculas son opiones modificables Las partes enmarcadas con [] son opcionales Las partes enmarcadas con {} son alternativas (una u otra). El simbolo | indica OR

Ejercicio práctico:

Objetivo: con la finalidad de ir construyendo el proyecto final y el laboratorio para realizar las practicas, crearemos un Tablespace:

1.

Crear en el C: una carpeta con nombre: C:\bd

2.

Entrar al RUN SQL LINE

3.

Conectarse a la base de datos system:

SQL> connect system Password: (en blanco, dar enter) si conoce la contraseña digítela.

4.

 
 

Nuestra

instrucción CREATE TABLESPACE creará

el tablespace ts_corporativo con el datafile ts_corp.dbf de 64MB y dejaremos que Oracle se encargue de gestionar automáticamente los extents de los objetos que se creer en el tablespace.

5.

Mediante esta sentencia asignamos un usuario a un tablespace, este será su tablespace por defecto cuando creamos un usuario.

SQL>CREATE

TABLESPACE Users;

USER

jfranco

IDENTIFIED

BY

admin

DEFAULT

M.C. JOSÉ BENITO FRANCO URREA

6.

Mediante esta sentencia, en caso de tener creado ya el usuario le asignamos un tablespace.

SQL > ALTER USER jfranco DEFAULT TABLESPACE ts_corporativo;

7. Otorgar el privilegio “CREATE SESSION” al usuario jfranco

SQL > GRANT CREATE SESSION TO jfranco;

8. Asignar un role predefinido al usuario.

SQL > GRANT DBA TO jfranco;

CONNECT

CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER, ALTER SESSION

RESOURCE

CREATE TABLE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR

SCHEDULER_

CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM, MANAGE SCHEDULER

ADMIN

DBA

Tiene la mayoría de los privilegios, no asignar a los que no son administradores.

SELECT_CATALOG_ROLE

No tiene privilegios de sistema, pero tiene cerca de 1600 privilegios de objeto.

9. Ejecutar la herramienta SQL Developer

de objeto. 9. Ejecutar la herramienta SQL Developer Oracle SQL Developer es una herramienta gráfica gratis

Oracle SQL Developer es una herramienta gráfica gratis que mejora la productividad y simplifica las tareas de desarrollo para base de datos Oracle. Usando Oracle SQL Developer, podrás navegar, editar y crear objetos de base de datos Oracle, ejecutar sentencias SQL, editar y depurar PL SQL, construcción de PL SQL de pruebas unitarias, ejecutar informes y colocar archivos bajo control de versiones.

M.C. JOSÉ BENITO FRANCO URREA

NOTA: superior. debemos tener instalada la versión de Java SDK JDK 1.6.11 o CONECTARNOS CON

NOTA:

superior.

debemos

tener

instalada

la

versión

de

Java

SDK JDK

1.6.11 o

CONECTARNOS CON LA BASE DE DATOS TS_CORP.DBF

Seleccionar del Menu Archivo - Nuevo

1.6.11 o CONECTARNOS CON LA BASE DE DATOS TS_CORP.DBF Seleccionar del Menu Archivo - Nuevo M.C.

M.C. JOSÉ BENITO FRANCO URREA

Nos presenta la siguiente pantalla:

Nos presenta la siguiente pantalla: Seleccionamos Conexión a Base de Datos y seleccionamos el botón Aceptar.

Seleccionamos Conexión a Base de Datos y seleccionamos el botón Aceptar.

Nos muestra la siguiente pantalla:

a Base de Datos y seleccionamos el botón Aceptar. Nos muestra la siguiente pantalla: M.C. JOSÉ

M.C. JOSÉ BENITO FRANCO URREA

Vamos a llenar los campos con la siguiente información:

Vamos a llenar los campos con la siguiente información: Presionamos el Botón Probar Si el resultado

Presionamos el Botón Probar

Si el resultado fue Estado: Correcto la conexión será exitosa.

resultado fue Estado : Correcto la conexión será exitosa. Si es correcto el estado, presionar el

Si es correcto el estado, presionar el Botón Conectar

M.C. JOSÉ BENITO FRANCO URREA

Se presentará la conexión al lado izquierdo de la Base de datos.

la conexión al lado izquierdo de la Base de datos. La siguiente actividad es importar datos

La siguiente actividad es importar datos de un archivo en Excel de nombre BDAlumnos.xls

Seleccionar Tablas, presionar el botón derecho del mouse y seleccionar Importar Datos

Seleccionar Tablas, presionar el botón derecho del mouse y seleccionar Importar Datos M.C. JOSÉ BENITO FRANCO

M.C. JOSÉ BENITO FRANCO URREA

Seleccionar

BDALUMNOS.XLSX

y

abrir

de

la

carpeta

Archivos

Excel

el

archivo

y abrir de la carpeta Archivos Excel el archivo Aparece un asistente de importación de Datos,

Aparece un asistente de importación de Datos, Paso 1 de 5.

Archivos Excel el archivo Aparece un asistente de importación de Datos, Paso 1 de 5. M.C.

M.C. JOSÉ BENITO FRANCO URREA

Paso 2 de 5: Nombre de la tabla será ALUMNOS

Paso 2 de 5: Nombre de la tabla será ALUMNOS Paso 3 de 5: M.C. JOSÉ

Paso 3 de 5:

Paso 2 de 5: Nombre de la tabla será ALUMNOS Paso 3 de 5: M.C. JOSÉ

M.C. JOSÉ BENITO FRANCO URREA

Paso 4 de 5

Paso 4 de 5 Paso 5 de 5: M.C. JOSÉ BENITO FRANCO URREA

Paso 5 de 5:

Paso 4 de 5 Paso 5 de 5: M.C. JOSÉ BENITO FRANCO URREA

M.C. JOSÉ BENITO FRANCO URREA

Si seleccionamos la tabla se vería los siguientes datos: Crear una nueva tabla de nombre

Si seleccionamos la tabla se vería los siguientes datos:

Si seleccionamos la tabla se vería los siguientes datos: Crear una nueva tabla de nombre CARRERAS

Crear una nueva tabla de nombre CARRERAS

Campos de la Tabla

CVE_CARRERA

DESCRIPCION

GTI

GESTION DE LAS TECNOLOGIAS DE LA INFORMACION

LAT

LICENCIADO EN ADMINISTRACION Y TURISMO

LA

LICENCIADO EN ADMINISTRACION

M.C. JOSÉ BENITO FRANCO URREA

Seleccionar Tablas y presionar el botón derecho del mouse, del menú seleccione Nueva Tabla.

botón derecho del mouse, del menú seleccione Nueva Tabla. Se puede agregar campos con esta pantalla

Se puede agregar campos con esta pantalla básica.

mouse, del menú seleccione Nueva Tabla. Se puede agregar campos con esta pantalla básica. M.C. JOSÉ

M.C. JOSÉ BENITO FRANCO URREA

También se puede utilizar en modo Avanzado:

También se puede utilizar en modo Avanzado: M.C. JOSÉ BENITO FRANCO URREA

M.C. JOSÉ BENITO FRANCO URREA

1.1. Estructura de un bloque PL/SQL.

Construyendo bloques de programas PL/SQL

PL/SQL es un lenguaje de bloques estructurados. Un bloque PL/SQL está definido por las palabras clave DECLARE, BEGIN, EXCEPTION, y END, las que separan el bloque en tres secciones:

y END , las que separan el bloque en tres secciones: 1. Declarativa (DECLARE): sentencias que
y END , las que separan el bloque en tres secciones: 1. Declarativa (DECLARE): sentencias que

1. Declarativa (DECLARE): sentencias que declaran las variables, constantes y otros elementos de código, los que pueden ser utilizados dentro de ese bloque.

2. Ejecutables (BEGIN): las sentencias que se ejecutan cuando el bloque se corre.

M.C. JOSÉ BENITO FRANCO URREA

3. El manejo de excepciones (EXCEPTION): una sección especialmente estructurada que puede utilizar para "capturar" o atrapar, cualquier excepción que se produce cuando se corre la sección ejecutable.

ExcepciónVariables para control de errores. BEGIN Código. [EXCEPTION] Control y tratamiento de errores. Es el punto al que se transfiere el control del programa siempre que exista un problema. Los indicadores de excepción pueden ser definidos por el usuario o por el sistema, como es por ejemplo la excepción ZERO_DIVIDE. Las excepciones se activan automáticamente al ocurrir un error, existiendo la definición de la excepción OTHERS que considera aquellos errores no definidos y que siempre se ubica al final de todas las excepciones. END [nombre del bloque]; Fin del Bloque.

Sólo la sección ejecutable es requerida. Usted puede no declarar nada en un bloque, y no tiene que capturar las excepciones producidas en ese bloque.

Un bloque en sí mismo es una instrucción ejecutable, por lo que los bloques se pueden anidar dentro de otros bloques.

1.2. Tipos de Bloques.

anidar dentro de otros bloques. 1.2. Tipos de Bloques. : 1. Anónimos. Vamos a comenzar por

:

1. Anónimos. Vamos a comenzar por el tipo de bloque más sencillo que existe, éste tipo de bloque no contiene sección de encabezado por lo tanto no tiene un nombre asignado, por eso se llama bloque anónimo. Este tipo de bloque no puede ser llamado por otro código debido a que no tiene un handler ó manejador por el cual se identifique al programa, básicamente los bloques

M.C. JOSÉ BENITO FRANCO URREA

anónimos sirven de contenedores para ejecutar pequeños scripts o hacer llamadas a otros bloques PL/SQL como procedures o funciones.

a otros bloques PL/SQL como procedures o funciones . Nota: Al quedar los bloques anónimos almacenados

Nota: Al quedar los bloques anónimos almacenados en el buffer, a no ser que se guardasen en ficheros, se perderían al limpiar el buffer, cosa que no ocurre con los procedimientos y funciones, que se almacenan en la propia base de datos.

2. Procedimientos o funciones.

Una vez que tenemos escrito un bloque de código, podemos guardarlo en un fichero .sql para su posterior uso, o bien guardarlo en base de datos para que pueda ser ejecutado por cualquier aplicación. El segundo caso se realiza mediante procedimientos almacenados (Stored Procedure).

A la hora de guardar un bloque de código hay que tener en cuenta ciertas normas:

La palabra reservada DECLARE desaparece.

Podremos crear procedimientos y funciones. Los procedimientos no podrán retornar ningún valor sobre su nombre, mientras que las funciones deben retornar un valor de un tipo de dato básico.

Procedimientos:

Un procedimiento [almacenado] es un subprograma que ejecuta una acción específica y que no devuelve ningún valor por sí mismo, como sucede con las funciones. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código. Para crear un procedimiento (stored procedure:

procedimiento almacenado) usaremos la siguiente sintaxis:

M.C. JOSÉ BENITO FRANCO URREA

Cuando se crea un procedimiento, éste se compila en primer lugar y queda almacenado en

Cuando se crea un procedimiento, éste se compila en primer lugar y queda almacenado en la base de datos de forma compilada. El código compilado puede ser posteriormente utilizado por cualquier bloque PL/SQL. Para modificar un procedimiento creado debemos reemplazarlo por el nuevo volviendo a compilarlo añadiendo las palabras clave OR REPLACE. Podemos eliminar un procedimiento mediante la orden DROP PROCEDURE <nombre>

Función:

Las funciones son iguales que los procedimientos pero además devuelven un valor, por lo que la llamada a una función debe realizarse dentro de una expresión. La orden RETURN dentro de una función devuelve el valor que la función debe devolver, el cual se convierte al tipo especificado en la cabecera de la función. Puede haber más de una instrucción RETURN, pero solo se ejecutará la primera que se encuentre dentro de la lógica del programa.

Para crear una función usaremos la siguiente sintaxis:

Para crear una función usaremos la siguiente sintaxis: Restricciones en Funciones  No se permiten comandos

Restricciones en Funciones

No se permiten comandos INSERT, UPDATE o DELETE.

La función no puede llamar a otro subprograma que rompa una de las restricciones arriba indicadas.

M.C. JOSÉ BENITO FRANCO URREA

1.3. Uso de variables.

Las variables se pueden emplear para:

Almacenamiento temporal de datos.

Manipulación de valores almacenados.

Reusabilidad.

Fácil Mantenimiento.

1.4. Manejo de variables PL/SQL.

PL/SQL permite declarar constantes y variables para ser utilizadas en cualquier expresión

dentro de un programa. La única condición exigida por PL/SQL es que cada variable (o

constante) debe estar declarada antes de ser utilizada en una expresión.

Reglas para nombres de variables:

Dos variables pueden tener el mismo nombre, si están en bloques diferentes.

El nombre de la variable (identificador) no debería ser el mismo que el de una columna de una tabla utilizada en el bloque.

Por defecto, todas las variables se inicializan a NULL.

1.5. Tipos de Variables.

ESCALARES

BOOLEANAS

COMPUESTAS

LOB

DE ENLACE (BIND)

Variables Escalares

VARCHAR2 (longitud_máxima)

NUMBER [(precisión, escala)]

DATE

CHAR [(longitud_máxima)]

M.C. JOSÉ BENITO FRANCO URREA

LONG

LONG RAW

BOOLEAN

BINARY_INTEGER

Variables BOOLEANAS

A una variable Boolean sólo se le pueden asignar los valores: TRUE, FALSE o NULL.

Estas variables están conectadas por los operadores lógicos AND, OR y NOT

Variables del Tipo de Datos Compuestos

Tipos:

o

REGISTROS PL/SQL

o

TABLAS PL/SQL

Contienen componentes internos

PL/SQL Creación de un Registro

Sintaxis:

internos PL/SQL Creación de un Registro  Sintaxis:  Donde declaración_campo significa: PL/SQL Ejemplo de

Donde declaración_campo significa:

 Sintaxis:  Donde declaración_campo significa: PL/SQL Ejemplo de Registro PL/SQL  Declarar un registro

PL/SQL Ejemplo de Registro PL/SQL

Declarar un registro para almacenar el número de empleado, nombre, trabajo y sueldo de un nuevo empleado:

de empleado, nombre, trabajo y sueldo de un nuevo empleado:  Los componentes individuales del registro

Los componentes individuales del registro se referenciarán de forma cualificada; en este ejemplo:

individuales del registro se referenciarán de forma cualificada; en este ejemplo: M.C. JOSÉ BENITO FRANCO URREA

M.C. JOSÉ BENITO FRANCO URREA

Variables LOB

Permiten almacenar bloques de datos no estructurados, como pantallas de texto, imágenes gráficas, vídeo clips, y sonido, de hasta 4 Gb. de tamaño.

CLOB

BLOB

BFILE

NCLOB

Character Large Object. Se utiliza para almacenar bloques grandes de datos de caracteres. Binary Large Object. Se utiliza para almacenar objetos binarios grandes en la B.D. Binary File. Se utiliza para almacenar objetos binarios grandes en archivos del sistema operativo, fuera de la B.D. National Language Character Large Object. Se utiliza para almacenar en la B.D. bloques grandes de datos NCHAR de un byte único o multi-bytes de ancho fijo.

Variables de Enlace (Bind)

Son variables de SQL*Plus.

Las pueden referenciar bloques de PL/SQL mediante el uso del ampersand (&).

Ejemplo:

el uso del ampersand (&).  Ejemplo:  Atributo %TYPE  Permite declarar una variable basada

Atributo %TYPE

Permite declarar una variable basada en:

o

Otras variables previamente declaradas

o

La definición de una columna de la base de datos

Preceder de %TYPE por:

o

La tabla y la columna de la base de datos

o

El nombre de la variable definida con anterioridad

Ejemplo:

v_ename emp.ename%TYPE;

M.C. JOSÉ BENITO FRANCO URREA

TIPOS DE DATOS ALFANUMÉRICOS  Tipo de dato CHAR(n): Almacena cadenas de caracteres de longitud

TIPOS DE DATOS ALFANUMÉRICOS

Tipo de dato CHAR(n): Almacena cadenas de caracteres de longitud fija. Su rango está entre 1 y 2.000 bytes de ocupación. Tipo de dato VARCHAR2(n): Almacena cadenas de caracteres de longitud variable. Tipo de dato VARCHAR(n): En Oracle8 es equivalente a VARCHAR2.

Tipo de dato NCHAR(n): Almacena un valor alfanumérico de longitud fija. Puede almacenar caracteres ASCII, EBCDIC, UNICODE. Tipo de dato NVARCHAR2(n): Almacena un valor alfanumérico de longitud variable. Puede almacenar caracteres ASCII, EBCDIC,UNICODE

TIPOS DE DATOS NUMÉRICOS

Tipo de dato NUMBER(p, s): Almacena valores numéricos en punto flotante que pueden estar entre 1.0 x 10-130 y 9.9…(38 nueves)… 9 x 10125.

Tipo de dato FLOAT(N): Almacena un número en punto decimal sin restricción de dígitos decimales, donde n indica la precisión binaria máxima que puede moverse en el rango 1 a 126.

TIPOS DE DATOS FECHA

Tipo de dato DATE: Almacena un valor de fecha y hora. Para un tipo de dato DATE, Oracle almacena internamente los siguientes datos:

Siglo

Año

Mes

Día

Hora

Minuto

Segundo

M.C. JOSÉ BENITO FRANCO URREA

El formato por defecto de las fechas es: 'DD-MON-YYYY'

TIPO DE DATOS BINARIOS

Tipos de datos binarios: Permiten almacenar información en formato "crudo", valores binarios tal y como se almacenan en el disco duro o como residen en memoria.

Tipo de dato LONG: Almacena caracteres de longitud variable hasta 2 Gb. En Oracle8 y siguientes versiones se deben usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanuméricos.

OTROS TIPOS DE DATOS Tipo de dato ROWID: Representa una dirección de la base de datos, ocupada por una única fila. Este tipo de dato sirve para guardar punteros a filas concretas.

1.6. Declaración de Variables

La sintaxis para declarar variables es la siguiente:

La sintaxis para declarar variables es la siguiente: donde:  tipo_dato: es el tipo de dato

donde:

tipo_dato: es el tipo de dato que va a poder almacenar la variable, este puede ser cualquiera de los tipos soportandos por ORACLE, es decir NUMBER , DATE , CHAR , VARCHAR, VARCHAR2, BOOLEAN Además para algunos tipos de datos (NUMBER y VARCHAR) podemos especificar la longitud.

La cláusula CONSTANT indica la definición de una constante cuyo valor no puede ser modificado. Se debe incluir la inicialización de la constante en su declaración.

La cláusula NOT NULL impide que a una variable se le asigne el valor nulo, y por tanto debe inicializarse a un valor diferente de NULL.

Las variables que no son inicializadas toman el valor inicial NULL.

La inicialización puede incluir cualquier expresión legal de PL/SQL, que lógicamente debe corresponder con el tipo del identificador definido.

Los tipos escalares incluyen los definidos en SQL más los tipos VARCHAR y BOOLEAN. Este último puede tomar los valores TRUE, FALSE y NULL, y

M.C. JOSÉ BENITO FRANCO URREA

se suele utilizar para almacenar el resultado de alguna operación lógica. VARCHAR es un sinónimo de CHAR.

También es posible definir el tipo de una variable o constante, dependiendo del tipo de otro identificador, mediante la utilización de las cláusulas %TYPE y %ROWTYPE. Mediante la primera opción se define una variable o constante escalar, y con la segunda se define una variable fila, donde identificador puede ser otra variable fila o una tabla. Habitualmente se utiliza %TYPEpara definir la variable del mismo tipo que tenga definido un campo en una tabla de la base de datos, mientras que%ROWTYPE se utiliza para declarar varibales utilizando cursores.

se utiliza para declarar varibales utilizando cursores. 1.7. Asignación. Inicialización de Variables y palabras

1.7. Asignación. Inicialización de Variables y palabras claves.

Set de Caracteres y Unidades Léxicas

Las instrucciones del lenguaje deben ser escritas utilizando un grupo de

caracteres válidos. PL/SQL no es sensible a mayúsculas o minúsculas. El grupo

de caracteres incluye los siguientes:

M.C. JOSÉ BENITO FRANCO URREA

Letras mayúsculas y minúsculas de la A a la Z

Números del 0 al 9

Los símbolos ( ) + - * / < > = ! ~ ^ ;

Tabuladores, espacios y saltos de carro

. ‘ @ % , “ # $ & _ | { } ? [ ]

Por ejemplo en la instrucción:

bono := salario * 0.10;

-- cálculo del bono

Se observan las siguientes unidades léxicas:

Los identificadores bono y salario

El símbolo compuesto :=

Los símbolos simples * ;

El literal numérico 0.10

El comentario “cálculo del bono

Delimitadores e Identificadores Un delimitador es un símbolo simple o compuesto que tiene un significado especial dentro de PL/SQL. Por ejemplo, es posible utilizar delimitadores para representar operaciones aritméticas, por ejemplo:

Símbolo

Significado

+

operador de suma

%

indicador de atributo

delimitador de caracteres

.

selector de componente

/

operador de división

M.C. JOSÉ BENITO FRANCO URREA

(

expresión o delimitador de lista

)

expresión o delimitador de lista

:

indicador de variable host

,

separador de ítems

*

operador de multiplicación

delimitador de un identificador entre comillas

=

operador relacional

<

operador relacional

>

operador relacional

@

indicador de acceso remoto

;

terminador de sentencias

-

negación u operador de substracción

Los delimitadores compuestos consisten de dos caracteres, como por ejemplo:

Símbolo

Significado

:=

operador de asignación

=>

operador de asociación

||

operador de concatenación

**

operador de exponenciación

<<

comienzo de un rótulo

M.C. JOSÉ BENITO FRANCO URREA

>>

fin de un rótulo

/*

comienzo de un comentario de varias líneas

*/

fin de un comentario de varias líneas

operador de rango

<>

operador relacional

!=

operador relacional

^=

operador relacional

<=

operador relacional

>=

operador relacional

--

comentario en una línea

Los identificadores incluyen constantes, variables, excepciones, cursores, subprogramas y paquetes.

La longitud de un identificador no puede exceder los 30 caracteres. Se recomienda que los nombres de los identificadores utilizados sean descriptivos.

Algunos identificadores especiales, llamados palabras reservadas, tienen un especial significado sintáctico en PL/SQL y no pueden ser redefinidos. Son palabras reservadas, por ejemplo, BEGIN, END, ROLLBACK, etc.

Es posible asignar valores a las variables de dos formas:

La primera utiliza el operador “:=”. La variable se ubica al lado izquierdo y la expresión al lado derecho del símbolo.

Por ejemplo:

M.C. JOSÉ BENITO FRANCO URREA

impuesto:= precio * iva; bono := Salario_actual * 0.10 ; Monto:= TO_NUMBER(SUBSTR(‘750 dólares’, 1, 3))
impuesto:= precio * iva; bono := Salario_actual * 0.10 ; Monto:= TO_NUMBER(SUBSTR(‘750 dólares’, 1, 3))

impuesto:= precio * iva;

bono := Salario_actual * 0.10 ;

Monto:= TO_NUMBER(SUBSTR(‘750 dólares’, 1, 3)) ;

Valido:= False ;

La segunda forma de asignar valores a variables es obtener valores

directamente desde la base de datos, como en:

SELECT salario * 0.10 INTO bonus FROM emp WHERE empno = emp_id ;

Declaración de Constantes

En la declaración de una constante (muy similar a la de una variable), se debe incorporar la palabra reservada “constant” e inmediatamente asignar el valor deseado. En adelante, no se permitirán reasignaciones de valores para aquella constante que ya ha sido definida.

Ejemplo: credit_limit CONSTANT real := 5000.00 ;

1.8. Referenciando variables que no son de PL/SQL.

Almacenar el salario anual en una variable global de SQL*Plus.

:g_monthly_sal := v_sal / 12;

M.C. JOSÉ BENITO FRANCO URREA

• Referenciar variables no-PL/SQL como variables Host.

Preceder las referencias con dos puntos (:)

1.9. Ejercicios Prácticos.

IMPORTAR LOS DATOS DEL ARHIVO DE TRABAJO DE EXCEL BDCORPORATIVO.XLSX HOJAS:

EMPLEADOS-DEPARTAMENTOS

EJEMPLO DE BLOQUE ANÓNIMO:

Declaración de Variables y constantes con valor inicial:

SQL> SET SERVEROUTPUT ON;

constantes con valor inicial: SQL> SET SERVEROUTPUT ON; Calcular un bono de 0.10 % del sueldo

Calcular un bono de 0.10 % del sueldo para el empleado número: 5232 de la Tabla EMPLEADOS

Calcular un bono de 0.10 % del sueldo para el empleado número: 5232 de la Tabla

M.C. JOSÉ BENITO FRANCO URREA

Ejemplo de operaciones.

Ejemplo de operaciones. Ejemplo usando variables de sustitución M.C. JOSÉ BENITO FRANCO URREA

Ejemplo usando variables de sustitución

Ejemplo de operaciones. Ejemplo usando variables de sustitución M.C. JOSÉ BENITO FRANCO URREA

M.C. JOSÉ BENITO FRANCO URREA

2. Escribiendo comandos ejecutables

Objetivo:

Reconocer el significado de la sección ejecutable

Escribir sentencias en la sección ejecutable

Describir las reglas de bloques anidados

Ejecutar y comprobar un bloque PL/SQL

2.1. Línea maestra para escribir un bloque PL/SQL

Oracle permite acceder y manipular información de la base de datos definiendo objetos procedurales (subprogramas) que se almacenan en la base de datos. Estos objetos procedurales son unidades de programa PL/SQL:

Funciones y Procedimientos almacenados

de programa PL/SQL: Funciones y Procedimientos almacenados 1. Declarativa (DECLARE): sentencias que declaran las

1. Declarativa (DECLARE): sentencias que declaran las variables, constantes y otros elementos de código, los que pueden ser utilizados dentro de ese bloque.

2. Ejecutables (BEGIN): las sentencias que se ejecutan cuando el bloque se corre.

3. El manejo de excepciones (EXCEPTION): una sección especialmente estructurada que puede utilizar para "capturar" o atrapar, cualquier excepción que se produce cuando se corre la sección ejecutable.

M.C. JOSÉ BENITO FRANCO URREA

ExcepciónVariables para control de errores. BEGIN Código. [EXCEPTION] Control y tratamiento de errores. Es el punto al que se transfiere el control del programa siempre que exista un problema. Los indicadores de excepción pueden ser definidos por el usuario o por el sistema, como es por ejemplo la excepción ZERO_DIVIDE. Las excepciones se activan automáticamente al ocurrir un error, existiendo la definición de la excepción OTHERS que considera aquellos errores no definidos y que siempre se ubica al final de todas las excepciones. END [nombre del bloque]; Fin del Bloque.

PROCEDIMIENTOS:

Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.

CREATE [OR REPLACE PROCEDURE [esquema].nombre-procedimiento

(nombre-parámetro {IN | OUT | IN OUT} tipo de dato, Declaración de variables; Declaración de constantes; Declaración de cursores; BEGIN Cuerpo del subprograma PL/SQL; EXCEPTION Bloque de excepciones PL/SQL; END;

) {IS | AS}

EXCEPTION Bloque de excepciones PL/SQL; END; ) {IS | AS} Descripción de la sintaxis: • Nombre-parámetro:

Descripción de la sintaxis:

Nombre-parámetro: es el nombre que queramos dar al parámetro. Podemos utilizar múltiples parámetros. En caso de no necesitarlos, podemos omitir los paréntesis. IN: especifica que el parámetro es de entrada y que por tanto dicho parámetro tiene que tener un valor en el momento de llamar a la función o procedimiento. Si no se especifica nada, los parámetros son por defecto de tipo entrada.

M.C. JOSÉ BENITO FRANCO URREA

OUT: especifica que se trata de un parámetro de salida. Son parámetros cuyo valor es

devuelto después de la ejecución el procedimiento al bloque PL/SQL que lo llamó. Las funciones PLSQL no admiten parámetros de salida.

IN OUT: Son parámetros de entrada y salida a la vez.

Tipo-de-dato: Indica el tipo de dato PLSQL que corresponde al parámetro (NUMBER, VARCHAR2, etc).

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento existe, se producirá, un error. La sintaxis es muy parecida a la de un bloque anónimo, salvo porque se reemplaza la sección DECLARE por la secuencia PROCEDURE . IS en la especificación del procedimiento. Debemos especificar el tipo de datos de cada parámetro. Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo. Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

Cuando se crea un procedimiento o función, Oracle automáticamente compila el código fuente, guarda el código objeto en un área compartida de la SGA (System Global Area) y almacena tanto el código fuente como el código objeto en catálogos del diccionario de datos. El código objeto permanece en la SGA, por tanto, los procedimientos o funciones se ejecutan más rápidamente y lo pueden compartir muchos usuarios.

SET SERVEROUTPUT ON

se ejecutan más rápidamente y lo pueden compartir muchos usuarios. SET SERVEROUTPUT ON M.C. JOSÉ BENITO
se ejecutan más rápidamente y lo pueden compartir muchos usuarios. SET SERVEROUTPUT ON M.C. JOSÉ BENITO

M.C. JOSÉ BENITO FRANCO URREA

EJERCICIO PRÁCTICO:

Crear un procedimiento que permita consultar el sueldo de los empleados pasando como parámetro su número de empleado, si no existe el empleado mandará un mensaje de excepción que indique que el empelado no fue encontrado.

SET SERVEROUTPUT ON

que el empelado no fue encontrado. SET SERVEROUTPUT ON Ejecutamos el procedimiento: Ejecutar el procedimiento con

Ejecutamos el procedimiento:

encontrado. SET SERVEROUTPUT ON Ejecutamos el procedimiento: Ejecutar el procedimiento con el número de empleado 8888

Ejecutar el procedimiento con el número de empleado 8888 para ejecutar la EXCEPTION

M.C. JOSÉ BENITO FRANCO URREA

2.2. Comentarios. • Monolínea.- Comienzan con dos guiones y continua hasta el final de la

2.2. Comentarios.

Monolínea.- Comienzan con dos guiones y continua hasta el final de la línea.

-- Esto es un comentario

• Multilínea.- Comienzan con el delimitador /* y terminan con el delimitador */.

/* Esto es otro comentario, que puede abarcar varias líneas */

1.1. Funciones SQL en PL/SQL: Conversión de

tipos, Mezclando

Función:

Las funciones son iguales que los procedimientos pero además devuelven un valor, por lo que la llamada a una función debe realizarse dentro de una expresión. La orden RETURN dentro de una función devuelve el valor que la función debe devolver, el cual se convierte al tipo especificado en la cabecera de la función. Puede haber más de una instrucción RETURN, pero solo se ejecutará la primera que se encuentre dentro de la lógica del programa.

Para crear una función usaremos la siguiente sintaxis:

dentro de la lógica del programa. Para crear una función usaremos la siguiente sintaxis: M.C. JOSÉ

M.C. JOSÉ BENITO FRANCO URREA

Restricciones en Funciones

No se permiten comandos INSERT, UPDATE o DELETE.

La función no puede llamar a otro subprograma que rompa una de las restricciones arriba indicadas.

Ejercicio PRÁCTICO:

MOD

Devuelve el resto de la división entera entre dos números.

MOD(<dividendo>, <divisor> ) SELECT MOD(20,15) -- Devuelve el modulo de dividir 20/15 FROM DUAL
MOD(<dividendo>, <divisor> )
SELECT MOD(20,15) -- Devuelve el modulo de dividir 20/15
FROM DUAL
MOD(20,15) -- Devuelve el modulo de dividir 20/15 FROM DUAL PARA CONSULTAR LAS FUNCIONES INTEGRADAS EN

PARA CONSULTAR LAS FUNCIONES INTEGRADAS EN PL/SQL VISITE TE LINK.

TE LINK. http://www.devjoker.com/contenidos/catss/67/Funciones-integradas-de-PLSQL.aspx M.C. JOSÉ BENITO FRANCO URREA

M.C. JOSÉ BENITO FRANCO URREA

1.2. bloques anidados y ámbito de variables, Operadores en PL/SQL.  Bloques Anidados y Ámbito

1.2. bloques anidados y ámbito de variables,

Operadores en PL/SQL.

Bloques Anidados y Ámbito de la Variable:

en PL/SQL.  Bloques Anidados y Ámbito de la Variable: Operadores en PL/SQL La siguiente tabla

Operadores en PL/SQL

La siguiente tabla ilustra los operadores de PL/SQL.

Tipo de operador

Operadores

Operador de

 

:= (dos puntos + igual)

asignación

 

Operadores

+ (suma) - (resta) * (multiplicación) / (división)

aritméticos

M.C. JOSÉ BENITO FRANCO URREA

 

** (exponente)

Operadores relacionales o de comparación

= (igual a) <> (distinto de) < (menor que) > (mayor que) >= (mayor o igual a) <= (menor o igual a)

Operadores

AND (y lógico) NOT (negacion)

lógicos

OR

(o lógico)

Operador de concatenación

 

||

1.3. Ejercicios Prácticos.

Crear un procedimiento que sume dos números:

Prácticos. Crear un procedimiento que sume dos números: Crear una función pl/sql que duplica la cantidad
Prácticos. Crear un procedimiento que sume dos números: Crear una función pl/sql que duplica la cantidad

Crear una función pl/sql que duplica la cantidad recibida como parámetro:

función pl/sql que duplica la cantidad recibida como parámetro: EJECUTAMOS LA FUNCIÓN M.C. JOSÉ BENITO FRANCO

EJECUTAMOS LA FUNCIÓN

M.C. JOSÉ BENITO FRANCO URREA

M.C. JOSÉ BENITO FRANCO URREA

M.C. JOSÉ BENITO FRANCO URREA

3. Interactuando con Oracle server

3.1. Comando SQL en PL/SQL.

El SQL es un lenguaje unificado, lo utilizan todo tipo de usuarios, desde el administrador de la base de datos, hasta el usuario final, permite la realización de cualquier consulta de datos.

Las sentencias de SQL se clasifican como parte del DDL o del DML.

DDL(Data Definition Language) Lenguaje de Definición de Datos: Son las sentencias SQL que permiten definir los objetos de la Base de Datos. ALTER DATABASE, CREATE TABLE, DROP SEQUENCE, GRANT.

DML(Data Manipulation Language) Lenguaje de manipulación de datos: Son las sentencias SQL que permiten manejar la base de datos. DELETE, INSERT, SELECT, UPDATE.

Siempre que se realiza alguna operación en la base de datos, no se realiza directamente sobre la tabla sino sobre una copia local de esta. De tal manera que si queremos que los resultados de estas operaciones se trasladen a la base de datos, hay que confirmar dicha operación con el comando commit. Si no queremos que estos resultados modifiquen la base de datos (Deshacer) se utiliza el comando rollback, aunque hay que hacer la claridad que algunas sentencias SQL no pueden volverse atrás.

RESTRICCIONES

Las restricciones se utilizan para garantizar que los datos cumplan unas condiciones específicas. SQL maneja las siguientes.

NOT NULL Obliga a que la columna tenga un valor no nulo. Los valores nulos son diferentes de 0 y el espacio en blanco.

Evita valores repetidos en una columna, admitiendo

UNIQUE

valores nulos.

CHECK Verifica que se cumpla una condición especifica

DEFAULT Estable un valor por defecto para esta columna, si no se le asigna ninguno.

M.C. JOSÉ BENITO FRANCO URREA

PRIMARY KEY Establece columna o conjunto de columnas que hacen parte de la clave primaria. Solo puede existir una clave primaria por tabla. Puede ser referenciada como clave foránea por otras tablas.

FOREIGN KEY Establece que el contenido de esta columna será uno de los valores contenidos en una columna de otra tabla o de la misma. Se puede obligar que cuando una fila de la tabla maestra sea borrada, todas las filas de la tabla detalle cuya clave foránea coincida con la clave borrada se borren también.

3.2. Recuperación de datos en PL/SQL.

El comando SELECT básicamente te permite obtener o seleccionar las filas de una o varias tablas que están almacenadas en tu Base de Datos Oracle. Puedes consultar los datos directamente desde la línea de comandos o a través de los PL- SQL Procedures en Oraclepara poder procesar los registros obtenidos. Para obtener los datos que deseas procesar en tus PL-SQL Procedures en Oracle, el comando SELECT te provee de una serie de cláusulas que te permiten seleccionar las tablas, filtrar la información, agrupar los datos, ordenar el resultado, unir consultas, etc.

Revisemos como se define la sintaxis básica del comando SELECT:

/* PL-SQL Procedures en Oracle */

SELECT [distinct | All] {* | expresión} [c_alias] FROM [tabla, vista] [t_alias] [WHERE condición] [GROUP BY expresión [Having condición] ] [ORDER BY {expresion | posición} [Asc | Desc]]

Donde:

SELECT= Permite seleccionar las columnas o expresiones que se quieren mostrar en la consulta de tus PL-SQL Procedures en Oracle. Distinct= Permite obtener solo las filas que son distintas, omitiendo las filas duplicadas. All= Permite obtener todas las filas obteniendo incluso las duplicadas, valor por defecto. * = Permite seleccionar todas las columnas de las tablas o vistas listadas en la cláusula FROM. Expresión= Corresponde al nombre de una columna de las tablas o vistas listadas en la cláusula FROM, también puede contener funciones, subconsultas u otros valores. C_alias= Permite asignar un nombre a cada columna del Select. FROM= Permite identificar las tablas o vistas de las cuales se quieren obtener los datos en tus PL-SQL Procedures en Oracle. Tabla= Corresponde al nombre de la o las tablas que se van a consultar.

M.C. JOSÉ BENITO FRANCO URREA

Vista= Corresponde al nombre de la o las vistas que se van a consultar. T_alias= Permite asignar un nombre abreviado para identificar a la tabla o vista. WHERE= Permite identificar las condiciones para filtrar los datos que se quieren obtener en tus PL-SQL Procedures en Oracle. Condición= Corresponde a las definiciones de los filtros que se deben aplicar al conjunto de tablas o vistas listadas en la cláusula FROM. GROUP BY= Permite identificar las expresiones por las cuales se desean agrupar los datos que se quieren obtener en tus PL-SQL Procedures en Oracle. Having= Permite identificar las condiciones para filtrar los datos agrupados dentro de la cláusula GROUP BY. ORDER BY= Permite identificar las expresiones por las cuales se desean ordenar los datos que se quieren obtener en tus PL-SQL Procedures en Oracle. Posición= Corresponde al número de la columna por la cual se quieren ordenar los datos. Asc= Permite ordenar los datos de forma ascendente, valor por defecto. Desc= Permite ordenar los datos de forma descendente.

Ejemplo #1: El gerente necesita saber cuál es el sueldo más alto que se paga en la empresa. Veamos cómo se hace:

/* PL-SQL Function en Oracle */

Select max(empleados.sueldo) sueldo_mayor

From empleados;

Resultado:

SUELDO_MAYOR

------------

35000

Ejemplo #2: El gerente necesita saber cuál es el sueldo más alto y a que empleado se le paga en la empresa. Veamos cómo se hace:

/* PL-SQL Function en Oracle */

Select empleados.nombre, empleados.ap_paterno, empleados.sueldo, empleados.puesto from empleados where empleados.sueldo = (Select max(empleados.sueldo) from empleados);

Resultado:

NOMBRE AP_PATERNO

-------- ---------- ---------- -----------------------------

ANDREA MENDOZA

SUELDO PUESTO

35000 GERENTE

M.C. JOSÉ BENITO FRANCO URREA

Ejemplo #3: El gerente necesita saber cuál es el sueldo más bajo y a que empleado se le paga en la empresa. Veamos cómo se hace:

/* PL-SQL Function en Oracle */

Select empleados.nombre, empleados.ap_paterno, empleados.sueldo, empleados.puesto from empleados where empleados.sueldo = (Select min(empleados.sueldo) from empleados);

Resultados:

NOMBRE AP_PATERNO

-------- ---------- ---------- -----------------------------

INES ARMENTA

SUELDO PUESTO

3500 RECEPCIONISTA

Ejemplo #4: El gerente necesita saber cuál es el sueldo más alto por departamento. Veamos cómo se hace:

/* PL-SQL Function en Oracle */

Select n_dpto, max(sueldo) sueldo_mayor

From empleados

Group by n_dpto;

Resultado:

N_DPTO SUELDO_MAYOR ------ ------------

1805

15000

1804

25000

1800

35000

1801

15000

1803

15000

1802

15000

Ejercicio 5: consultar los departamentos.

SELECT * FROM departamentos;

Resultados:

N_DPTO DESCRIPCION ------ ------------------------------

M.C. JOSÉ BENITO FRANCO URREA

1800 DIRECCION

1801 RCURSOS FINANCIEROS

1802 INFORMATICA

1803 JURIDICO

1804 RECURSOS HUMANOS

1805 RECURSOS MATERIALES

6 filas seleccionadas

3.3.

Insertando datos en PL/SQL. Borrando datos en

PL/SQL.

Inserción de Registros El proceso de inserción de registros consiste en añadir a una tabla una o más filas y en cada fila todos o parte de sus campos.

INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>, ])] values (<valor1>,<valor2>, );

NOTA: Sólo podremos omitir un campo al efectuar una inserción cuando este acepte valores nulos.

Ejemplo: Se requiere ingresar un nuevo empleado a la empresa.

INSERT INTO empleados(num_empleado, NOMBRE, AP_PATERNO, AP_MATERNO, PUESTO, SUELDO, ANTIGUEDAD, N_DPTO) VALUES ('9223','JOSE BENITO', 'FRANCO','URREA','JEFE DE

OFICINA',20000,'10','1802');

Regla de restricción: el campo num_empleado debe estar declarado como llave primaria para evitar duplicar números de empleados.

3.4. Actualizando datos en PL/SQL.

La instrucción UPDATE SQL le permite actualizar registros de una tabla.

M.C. JOSÉ BENITO FRANCO URREA

Ejercicio 1: Se requiere actualizar el sueldo del nuevo empleado Número: 9223. El sueldo nuevo será de $ 30000.

UPDATE empleados SET sueldo = 30000 WHERE num_empleado = '9223';

TAREA 4: Investigar en internet como se hace una consulta con el comando SELECT de dos tablas.

Las tablas a consultar son: ALUMNOS y CARRERAS. NOTA: El campo para unir las dos tablas es CVE_CARRERA y debe de considerarse en la Cláusula WHERE del SELECT

EL RESULTADO DEBE DE SER EL SIGUIENTE:

MATRICULA NOMBRE DESCRIPCION --------- ------ --------------------------------------------

4201 GESTION DE LAS TECNOLOGIAS DE LA INFORMACION

MANUEL

4202 GESTION DE LAS TECNOLOGIAS DE LA INFORMACION

PEDRO

4203 GESTION DE LAS TECNOLOGIAS DE LA INFORMACION

JUAN

4204 GESTION DE LAS TECNOLOGIAS DE LA INFORMACION

ARIEL

4205 LICENCIADO EN ADMINISTRACION Y TURISMO

LUCIA

4206 LICENCIADO EN ADMINISTRACION Y TURISMO

ALICIA

4207 LICENCIADO EN ADMINISTRACION Y TURISMO

MAGDA

4208 LICENCIADO EN ADMINISTRACION

DANNYA

4209 LICENCIADO EN ADMINISTRACION

ROCIO

4210 LICENCIADO EN ADMINISTRACION

LUIS

3.5. COMMIT Y ROLLBACK.

Transacciones Una transacción es un conjunto de operaciones que se ejecutan en una base de datos, y que son tratadas como una única unidad lógica por el SGBD. Es decir, una transacción es una o varias sentencias SQL que se ejecutan en una base de datos como una única operación, confirmandose o deshaciendose en grupo. No todas las operaciones SQL son transaccionales. Sólo son transaccionales las operaciones correspondiente al DML, es decir:

Para confirmar una transacción se utiliza la sentencia COMMIT. Cuando realizamos COMMIT los cambios se escriben en la base de datos. Para deshacer una transacción se utiliza la sentencia ROLLBACK. Cuando realizamos ROLLBACK se deshacen todas las modificaciones realizadas por la transacción en la base de datos, quedando la base de datos en el mismo estado que antes de iniciarse la transacción.

M.C. JOSÉ BENITO FRANCO URREA

Un ejemplo clásico de transacción son las transferencias bancarias. Para realizar una transferencia de dinero entre dos cuentas bancarias debemos descontar el dinero de una cuenta, realizar el ingreso en la otra cuenta y grabar las operaciones y movimientos necesarios, actualizar los saldos.

Si en alguno de estos puntos se produce un fallo en el sistema podríamos haber descontado el dinero de una de las cuentas y no haberlo ingresado en la otra. Por lo tanto, todas estas operaciones deben ser correctas o fallar todas. En estos casos, al confirmar la transacción (COMMIT) o al deshacerla (ROLLBACK) garantizamos que todos los datos quedan en un estado consistente.

El siguiente ejemplo muestra una supuesta transacción bancaria:

DECLARE importe NUMBER; ctaOrigen VARCHAR2(23); ctaDestino VARCHAR2(23); BEGIN

importe := 100; ctaOrigen := '2530 10 2000 1234567890'; ctaDestino := '2532 10 2010 0987654321'; UPDATE CUENTAS SET SALDO = SALDO - importe WHERE CUENTA = ctaOrigen; UPDATE CUENTAS SET SALDO = SALDO + importe WHERE CUENTA = ctaDestino; INSERT INTO MOVIMIENTOS (CUENTA_ORIGEN, CUENTA_DESTINO,IMPORTE, FECHA_MOVIMIENTO) VALUES (ctaOrigen, ctaDestino, importe*(-1), SYSDATE); INSERT INTO MOVIMIENTOS (CUENTA_ORIGEN, CUENTA_DESTINO,IMPORTE, FECHA_MOVIMIENTO) VALUES (ctaDestino,ctaOrigen, importe, SYSDATE); COMMIT; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Error en la transaccion:'||SQLERRM); dbms_output.put_line('Se deshacen las modificaciones); ROLLBACK;

END;

en la transaccion:'||SQLERRM); dbms_output.put_line('Se deshacen las modificaciones); ROLLBACK ; END ;

NOTA: ORACLE es completamente transaccional. Siempre debemos especificar si que queremos deshacer o confirmar la transacción.

M.C. JOSÉ BENITO FRANCO URREA

3.6 Borrado de datos.

La sentencia DELETE.

Para borrar datos de una tabla, debemos utilizar la sentencia DELETE.

La sintaxis de la sentencia DELETE es la siguiente:

DELETE FROM <nombre_tabla> [ WHERE <condicion>];
DELETE FROM <nombre_tabla>
[ WHERE <condicion>];

El siguiente ejemplo ilustra el uso de la sentencia DELETE. Es buena idea especificar en la sentencia WHERE los campos que forman la clave primaria de la tabla para evitar borrar datos que no queramos eliminar.

Ejercicio Práctico: Borrar de la base de datos el empleado 9223.

DELETE FROM EMPLEADOS WHERE NUM_EMPLEADO = '9223';

M.C. JOSÉ BENITO FRANCO URREA

José Juan Garcia Borquez ID: 25122003

Integridad de base de datos

La integridad proporciona un medio de asegurar que los cambios que se hacen en la base de datos por usuarios autorizados no resultan en una pérdida de continencia de los datos.

Las restricciones de integridad protegen la base de datos contra daños accidentales. Una base de datos almacena información sobre alguna parte del mundo real, a la que denominamos universo de discurso. Ciertas reglas, las restricciones de integridad, gobiernan el minimundo. Cuando diseñamos un esquema para una aplicación de base de datos particular, una actividad importante consiste en identificar las restricciones de integridad que se deben cumplir en la base de datos.

Reglas de identidad.

o

Regla de integridad de unicidad de la clave primaria: La regla de integridad de unicidad está relacionada con la definición de clave primaria que establece que toda clave primaria que se elija para una relación no debe tener valores repetidos por lo que el conjunto de atributos CP es la clave primaria de una relación R, entonces la extensión de R no puede tener en ningún momento dos tuplas con la misma combinación de valores para los atributos de CP.

o

Regla de integridad de entidad de la clave primaria: La regla de integridad de entidad de la clave primaria dispone que los atributos de la clave primaria de una relación no pueden tener valores nulos. Esta regla es necesaria para que los valores de las claves primarias puedan identificar las tuplas individuales de las relaciones. Si las claves primarias tuviesen valores nulos, es posible que algunas tuplas no se pudieran distinguir. Un SGBD relacional tendrá que garantizar el cumplimiento de esta regla de integridad en todas las inserciones y en todas las modificaciones que afecten a atributos que pertenecen a la clave primaria de la relación.

o

Regla de integridad referencial: La regla de integridad referencial está relacionada con el concepto de clave foránea, lo que determina que todos los valores que toma una clave foránea deben ser valores nulos o valores que existen en la clave primaria que referencia. La necesidad de esta regla es debido a que las claves foráneas tienen por objetivo establecer una conexión con la clave primaria que referencian. Si un valor de una clave foránea no estuviese presente.

o

Regla de integridad de dominio: Esta regla establece dos condiciones: 1) La primera condición consiste en que un valor no nulo de un atributo Ai debe pertenecer al dominio del atributo Ai; es decir, debe pertenecer a dominio(Ai). Esta condición implica que todos los valores no nulos que contiene la base de datos para un determinado atributo deben ser del dominio declarado para dicho atributo. 2) La segunda condición sirve para establecer que los operadores que pueden aplicarse sobre los valores dependen de los dominios de estos valores; es decir, un

José Juan Garcia Borquez ID: 25122003

operador determinado sólo se puede aplicar sobre valores que tengan dominios que le sean adecuados.

Bibliografía

http://labredes.itcolima.edu.mx/fundamentosbd/sd_u3_3.htm

http://www.ecured.cu/index.php/Integridad_de_las_Bases_de_Datos

Funciones de conversión de Oracle.

Jose Juan Garcia Borquez

ID:25122003

ASCIISTR( string ): convierte cualquier carácter de string que no son ASCII a \xxxx donde xxxx representa un formato UTF-16

BIN_TO_NUM(expr1,expr2,expr3,

(number). Cada una expresión expr(i) debe ser un valor 0 o 1. Ejemplo:

SELECT BIN_TO_NUM(1,0,1,0) FROM DUAL; Resultado: 10

):

Convierte una cadena binaria a formato decimal

CAST(expr AS type_name): CAST(MULTISET(subconsulta) AS type_name) Ejemplos:

1)

SELECT CAST('22-OCT-1997' AS TIMESTAMP WITH LOCAL TIME ZONE) FROM dual;

SELECT product_id, CAST(ad_sourcetext AS VARCHAR2(30)) FROM print_media;

2)

CREATE TYPE cust_address_typ OID '82A4AF6A4CD1656DE034080020E0EE3D' AS OBJECT

( street_address

VARCHAR2(40)

,

postal_code

VARCHAR2(10)

,

city

VARCHAR2(30)

,

state_province

VARCHAR2(10)

,

country_id

CHAR(2)

);

/

CREATE TYPE address_book_t AS TABLE OF cust_address_typ;

/

CREATE TYPE address_array_t AS VARRAY(3) OF cust_address_typ;

/

CREATE TABLE cust_address ( custno NUMBER, street_address VARCHAR2(40), postal_code VARCHAR2(10), city VARCHAR2(30), state_province VARCHAR2(10), country_id CHAR(2));

CREATE TABLE cust_short (custno NUMBER, name VARCHAR2(31));

Jose Juan Garcia Borquez

ID:25122003

CREATE TABLE states (state_id NUMBER, addresses address_array_t);

SELECT s.custno, s.name, CAST(MULTISET(SELECT ca.street_address, ca.postal_code, ca.city, ca.state_province, ca.country_id FROM cust_address ca WHERE s.custno = ca.custno) AS address_book_t) FROM cust_short s;

SELECT CAST(s.addresses AS address_book_t) FROM states s WHERE s.state_id = 111;

3)

CREATE TABLE projects (empno NUMBER, project_name VARCHAR2(10));

CREATE TABLE emps_short (empno NUMBER, last_name VARCHAR2(10));

CREATE TYPE project_table_typ AS TABLE OF VARCHAR2(10);

SELECT e.last_name, CAST(MULTISET(SELECT p.project_name FROM projects p WHERE p.empno = e.empno ORDER BY p.project_name) AS project_table_typ) FROM emps_short e;

CHARTOROWID(char): Convierte un valor de los tipos CHAR,VARCHAR2,NCHAR o NVARCHAR2 a un valor de tipo ROWID. Ejemplo:

SELECT ename FROM scott.emp

Jose Juan Garcia Borquez

ID:25122003

WHERE ROWID = CHARTOROWID('AAAiPQAHoAAAAK3AAA');

COMPOSE( char ): Convierte char a una cadena Unicode normalizada al conjunto de caracteres del dato de entrada. SELECT COMPOSE ( 'o' || UNISTR('\0308') ) FROM DUAL;

CONVERT(char,destino_char_set,origen_char_set): Convierte char del conjunto de caracteres origen_char_set al conjunto de caracteres destino_char_set.

DECOMPOSE( cadena ,CANONICAL) DECOMPOSE( cadena ,COMPATIBILITY) Es valido solamente para caracteres UNICODE. SELECT DECOMPOSE ('Châteaux') FROM DUAL; DECOMPOSE Resultado: Cha^teaux

HEXTORAW(char): Convierte char a ROWID

NUMTODSINTERVAL:

NUMTOYMINTERVAL:

RAWTOHEX(raw): Convierte un carácter de tipo RAW a su equivalente hexadecimal

RAWTONHEX(raw): Convierte un carácter de tipo RAW a NVARCHAR2

ROWIDTOCHAR(rowid): Convierte un valor del tipo ROWID a un valor de tipo VARCHAR2 cuya longitud es siempre 18

SELECT ROWID FROM scott.emp WHERE ROWIDTOCHAR(ROWID) LIKE '%SAAb%';

ROWIDTONCHAR(rowid): Convierte un valor de tipo ROWID a NVARCHAR2

SCN_TO_TIMESTAMP(number): Transforma el valor number SCN (System Change Number) al valor aproximado de tipo TIMESTAMP asociado a dicho number.

TIMESTAMP_TO_SCN(timestamp): Convierte el valo introducido timestamp del tipo TIMESTAMP y devuelve el valor aproximado de SCN.

TO_BINARY_DOUBLE(expr,fmt, nlsparam ): Devuelve un numero con doble precisión en coma flotante.

Jose Juan Garcia Borquez

ID:25122003

TO_BINARY_FLOAT(expr,fmt, nlsparam ): Devuelve un numero con precisión sencilla en coma flotante.

TO_CHAR (character): Convierte valores de los tipos NCHAR,NVARCHAR2, CLOB o NCLOB a conjunto de caracteres de la base de datos.

TO_CHAR (datetime,fmt,nlsparam), TO_CHAR (interval,fmt,nlsparam) Convierte un valor de tipo fecha o intervalo a un valor de tipo fecha (DATE, TIMESTAMP, TIMESTAMP WITH TIMEZONE o TIMESTAMP WITH LOCAL TIME ZONE)

TO_CHAR (n,fmt, nlsparam ) Convierte el valor n de tipo NUMBER a un valor del tipo VARCHAR2, utilizando el formato opcional fmt. nlsparam debe ser un argumento con el siguiente formatos:

'NLS_NUMERIC_CHARACTERS = ''dg'' NLS_CURRENCY = ''text'' NLS_ISO_CURRENCY = territory ' El carácter d representa el separador decimal y el carácter g el separador de miles. Text representa el símbolo de la moneda local y territory representa el símbolo de la moneda internacional. SELECT

TO_CHAR(-10000,'L99G999D99MI',

'NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''AusDollars'' ') "Amount" FROM DUAL;

Amount

-------------------

AusDollars10.000,00-

TO_CLOB(lob_column), TO_CLOB (char): TO_CLOB convierte un valor NCLOB de una columna LOB o cualquier otro carácter al tipo CLOB values. char puede ser de uno de los tipos CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB.

TO_CLOB(lob_column), TO_CLOB (char): TO_CLOB convierte un valor NCLOB de una columna LOB o cualquier otro carácter al tipo CLOB values. char puede ser de uno de los tipos CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB.

TO_DSINTERVAL(char, nlsparam ): Convierte una cadena de caracteres del tipo CHAR, VARCHAR2, NCHAR, o NVARCHAR2 a un valor de tipoINTERVAL DAY TO SECOND. Ejemplo:

Jose Juan Garcia Borquez

ID:25122003

SELECT empno, ename FROM scott.emp WHERE hiredate + TO_DSINTERVAL('100 10:00:00') <= DATE '1990-01-01';

TO_LOB(long_column):Convierte un valor LONG o LONG RAW de la columna long_column a un valor LOB.

TO_MULTI_BYTE(char)

TO_NCHAR (character,fmt, nlsparam ): Convierte un string de tipo carácter, CLOB o NCLOB del juego de caracteres de la base de datos al juego de caracteres nacional.

TO_NCHAR (datetime): TO_NCHAR (datetime) convierte de los tipos DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL MONTH TO YEAR, o INTERVAL DAY TO SECOND del conjunto de caracteres de la base de datos al conjunto de caracteres nacional. Ejemplo:

SELECT TO_NCHAR(hiredate) FROM scott.emp;

TO_NCHAR (number): TO_NCHAR (n,fmt,nlsparam) convierte n a una cadena en el conjunto de caracteres nacional. El valor n puede ser de los tipos NUMBER, BINARY_FLOAT, o BINARY_DOUBLE. Ejemplo:

SELECT TO_NCHAR(empno) "NCHAR_Customer_ID" FROM scott.emp

TO_NCLOB(char)

TO_NUMBER(expr,fmt, nlsparam ) TO_NUMBER convierte expr a un valor de tipo NUMBER. expr puede ser un valor de tipo BINARY_FLOAT o BINARY_DOUBLE o un valor de tipo CHAR, VARCHAR2, NCHAR o NVARCHAR2 que contengan un numero en el formato especificado mediante el modelo de formato opcional fmt.

Ejemplo:

SELECT TO_NUMBER('-AusDollars100','L9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.'' NLS_CURRENCY = ''AusDollars'' ') "Amount" FROM DUAL;

Amount

----------

-100

TO_DSINTERVAL:

Jose Juan Garcia Borquez

ID:25122003

TO_SINGLE_BYTE(char): TO_SINGLE_BYTE devuelve char con todos sus multibytes caracteres convertidos a su correspondientes caracteres simples. char debe ser de los tipos CHAR, VARCHAR2, NCHAR, o NVARCHAR2. El valor devuelto es del mismo tipo que el de char.

TO_TIMESTAMP

TO_TIMESTAMP_TZ:

TO_YMINTERVAL:

TRANSLATE

USING:

UNISTR( string ): UNISTR toma como argumento un texto y lo convierte a una cadena en el conjunto de caracteres nacional.

Bibliografía

https://sites.google.com/site/josepando/home/funciones-sql/funciones-que-

devuelven-una-valor-nico-para-cada-fila-de-una-consulta-o-vista/funciones-de-

conversin

Seguridad de base de datos

La seguridad en las bases de datos es la protección contra la revelación no autorizada (confidencial), la alteración no autorizada (integridad) y contra la destrucción intencional o involuntaria.

Protección dirigida a dos tipos de usuarios:

1. Los que no tienen derechos de acceso.

2. Los que tienen derechos limitados a ciertas acciones.

Datos

administrarlo cuidadosamente.

->

activo

mas

valioso

de

una

organización

->

necesidad

de

controlarlo

y

Parte o la totalidad de los datos corporativos -> importancia estratégica -> necesidad de manejarlos en forma segura y confidencial.

Consideraciones sobre seguridad -> no se aplican solo a los datos -> brechas en la seguridad pueden afectar otras partes del sistema que a su vez pueden afectar la base de datos.

Algunas preguntas a plantearse son:

¿Cuán valiosos son los datos? ¿Cuáles datos deben asegurarse? ¿Cuánto costaran los accesos ilegales a los datos? ¿Cuáles son las implicaciones de los cambios o destrucciones de datos? ¿Qué medidas de seguridad afectan el funcionamiento de la base de datos? ¿Cómo pueden ocurrir los accesos no autorizados?

medidas de seguridad afectan el funcionamiento de la base de datos? ¿Cómo pueden ocurrir los accesos
medidas de seguridad afectan el funcionamiento de la base de datos? ¿Cómo pueden ocurrir los accesos
medidas de seguridad afectan el funcionamiento de la base de datos? ¿Cómo pueden ocurrir los accesos
medidas de seguridad afectan el funcionamiento de la base de datos? ¿Cómo pueden ocurrir los accesos
medidas de seguridad afectan el funcionamiento de la base de datos? ¿Cómo pueden ocurrir los accesos
José Juan Garcia Luis Molina Oscar Amavizca
José Juan Garcia
Luis Molina
Oscar Amavizca
La tecnología y prototipo de los sistemas de gestión de bases de datos distribuidas se
La tecnología y prototipo de los sistemas de gestión de bases de datos distribuidas se

La tecnología y prototipo de los sistemas de gestión de bases de datos distribuidas se han desarrollado de uno a otro y cada sistema adopta una arquitectura particular propia.

El diseñó de una BDD involucra 4 pasos: 1. Diseño del esquema conceptual donde se
El diseñó de una BDD involucra 4 pasos: 1. Diseño del esquema conceptual donde se

El diseñó de una BDD involucra 4 pasos:

1. Diseño del esquema conceptual donde

se describe la BD integral.

2. Diseño de fragmentación.

3. Diseño de la asignación de los

fragmentos.

4. Diseño de la BD física (transformar

los esquemas locales en áreas de almacenamiento y determinar métodos de acceso apropiados).

La fragmentación y asignación de los datos caracterizan el diseño de BDD. La fragmentación se ocupa fundamentalmente de los criterios lógicos que motivan la división de relaciones globales en fragmentos, mientras que la asignación se ocupa de los aspectos físicos de su ubicación y réplicas en sitios; aunque hay una diferencia entre ambos procesos, su interrelación es importante para obtener un diseño óptimo. En caso que también se distribuyan las aplicaciones debemos tener en cuenta el diseño de los esquemas, los requerimientos más importantes de las aplicaciones tenemos las siguientes:

1. Sitio que comparte una aplicación.

2. Frecuencia de activación de la aplicación

3. Cantidad, tipo y distribución estadística de los accesos

de cada aplicación a cada dato requerido. En el diseño de un sistema de bases de datos distribuidas debemos tener en cuenta algunas estrategias y objetivos y se deben en paralelo tomar decisiones sobre cómo hay que distribuir los datos entre los sitios de la red.

A los problemas que presentamos en el diseño de las Bases de Datos Centralizadas (BDC) se le añaden otros nuevos cuando diseñamos Bases de Datos Distribuidas (BDD) entre los cuales se destacan la distribución óptima de datos y de las aplicaciones en los diferentes sitios.

Cuando pensamos en el diseño de las bases de datos distribuidas debemos tener en cuenta la ubicación de los programas que accederán a las bases de datos y sobre los propios datos que constituyen la base de datos, en diferentes puntos de una red.

Sobre la ubicación de los programas supondremos que tenemos una copia de ellos en cada maquina donde se necesite acceder a la base de datos. Sin embargo el problema radica en como ubicaremos los datos en la red, existen diferentes formas de repartir los datos: En solo una maquina que almacene todos los datos y se encargue de responder a todas las consultas del resto de la red (sistema centralizado), ubicaríamos la base de dato en cada maquina donde se utilice, o pensaríamos en repartir las relaciones por toda la red.

La organización de los sistemas de bases de datos distribuidos se ha clasificado tradicionalmente sobre el nivel de compartición, características de acceso y nivel de conocimiento de los datos:

1. Inexistencia. Los datos y programas se ejecutan en un ordenador sin que exista comunicación entre ellos.

2. Se comparten datos y no programas. Existe una réplica de los programas de aplicación en cada máquina y los datos viajan a través de la red.

3. Se comparten datos y programas. Los datos y programas se reparten por los diferentes sitios de la red, dado un programa ubicado en un determinado sitio puede acceder a un servicio a otro programa de segundo sitio solicitando acceder a los datos ubicados en un tercero.

Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor)

Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el
Es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en múltiples

Es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en múltiples requerimientos de trabajo a través de redes LAN o WAN. La ubicación de los datos o de las aplicaciones es totalmente transparente para el cliente. El remitente de una solicitud es conocido como cliente. Sus características son:

Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo). Espera y recibe las respuestas del servidor. Por lo general, puede conectarse a varios servidores a la vez. Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario. Al contratar un servicio de redes , se tiene que tener en la velocidad de conexión que le otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.

Es cualquier recurso de cómputo dedicado a responder a los requerimientos del cliente. Los servidores

Es cualquier recurso de cómputo dedicado a responder a los requerimientos del cliente. Los servidores pueden estar conectados a los clientes a través de redes LANs o WANs, para proveer de múltiples servicios a los clientes y ciudadanos tales como impresión, acceso a bases de datos, fax, procesamiento de imágenes, etc.

Al receptor de la solicitud enviada por cliente se conoce como servidor. Sus características son:

Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo). Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente. Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado). No es frecuente que interactúen directamente con los usuarios finales.

CONCLUCION

Excelente curso, me ayudo a conocer mas sobre el lenguaje SQL, a organizar, administrar y

consultar datos almacenados en una computadora.

También me enseño a ser capaz de resolver problemas que tengan que ver con el uso de

PL/SQL y MYSQL.

atrás
atrás

INSTRUMENTOS DE EVALUACION

atrás
atrás

TEMARIO PRIMER EXÁMEN PARCIAL BASE DE DATOS III 1. PL/SQL

PL- Proviene de Procedural Language (lenguaje procedural)

SQL- Structured Query Language (Lenguaje de consulta estructurado).

Ofrece un conjunto de comandos procedurales (sentencias IF, bucles, asignaciones), organizado dentro de bloques, que complementan y amplían el alcance de SQL.

2.

herramienta SQL Developer

Es una herramienta gráfica gratis que mejora la productividad y simplifica las tareas de desarrollo para base de datos Oracle. Podrás navegar, editar y crear objetos de base de datos Oracle, ejecutar sentencias SQL, editar y depurar PL SQL, construcción de PL SQL de pruebas unitarias, ejecutar informes y colocar archivos bajo control de versiones.

3.

Estructura de Un bloque PL/SQL

Está definido por las palabras clave DECLARE, BEGIN, EXCEPTION, y END

por las palabras clave DECLARE, BEGIN, EXCEPTION, y END 4. TIPOS DE BLOQUES QUE SE MANEJAN

4. TIPOS DE BLOQUES QUE SE MANEJAN EN PL/SQL ANÓNIMO, PROCEDIMIENTO Y FUNCIÓN

M.C. JOSÉ BENITO FRANCO URREA

5.

PROCEDIMIENTO.

Es un subprograma que ejecuta una acción específica y que no devuelve ningún valor por sí mismo.

6. FUNCIÓN

Es un subprograma que ejecuta una acción específica y que SI devuelve un valor específico.

7. ESCRIBE EN LA LÍNEA SI ES UN PROCEDIMIENTO (PROCEDURE) O UNA FUNCIÓN (FUNCTION).

CREATE OR REPLACE PROCEDURE csueldo(num_empleado VARCHAR2)

IS

nombre_emp EMPLEADOS.NOMBRE%TYPE;

sueldo_emp EMPLEADOS.SUELDO%TYPE;

BEGIN

DBMS_OUTPUT.put_line('Numero de empleado ingresado: ' || num_emp);

SELECT NOMBRE, SUELDO INTO nombre_emp, sueldo_emp FROM EMPLEADOS

WHERE NUM_EMPLEADO=num_emp;

DBMS_OUTPUT.put_line('Nombre Empleado: ' || TRIM(nombre_emp));

DBMS_OUTPUT.put_line('Sueldo : '|| sueldo_emp);

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.put_line('EMPLEADO NO ENCONTRADO!');

END;

CREATE OR REPLACE FUNCTION parimpar(num NUMERIC) RETURN VARCHAR2

IS

BEGIN

IF MOD(num,2)=0 THEN RETURN 'PAR';

ELSE RETURN 'IMPAR';

END IF;

END;

M.C. JOSÉ BENITO FRANCO URREA

8.

LA SENTENCIA IF-THEN-ELSE IF-END IF

Te permite ejecutar una secuencia de declaraciones de forma condicional. El valor de una condición debe ser verdadero (TRUE) para que sea ejecutado o falso (FALSE) para que no se ejecute.

9. BUCLES WHILE, FOR, LOOP

Repiten una instrucción o un conjunto de instrucciones varias veces.

10. PRIMARY KEY (llave Primaria o principal)

Es un campo que define de manera única un registro. Ninguno de los campos que forman parte de la clave principal puede contener un valor nulo. Una tabla sólo puede tener una clave primaria.

11. FOREING KEY (llave foránea)

Una clave FORÁNEA o externa significa que los valores de una tabla también pueden aparecer en otra tabla.

12. Instrucción COMMIT

Hace permanentes los cambios realizados en la base de datos durante la transacción actual. También hace los cambios visibles para otros usuarios.

13. Instrucción ROLLBACK

Se deshacen todas las modificaciones realizadas por la transacción en la base de datos, quedando la base de datos en el mismo estado que antes de iniciarse la transacción.

14. DDL(Data Definition Language) Lenguaje de Definición de Datos.

Son las sentencias SQL que permiten definir los objetos de la Base de Datos. ALTER DATABASE, CREATE TABLE, DROP SEQUENCE, GRANT.

1. SQL > GRANT DBA TO jfranco;

2. SQL>CREATE USER jfranco IDENTIFIED BY admin DEFAULT TABLESPACE Users;

3. SQL > ALTER USER jfranco DEFAULT TABLESPACE ts_corporativo;

M.C. JOSÉ BENITO FRANCO URREA

15. DML(Data Manipulation Language) Lenguaje de manipulación de datos

Son las sentencias SQL que permiten manejar la base de datos. DELETE, INSERT, SELECT, UPDATE.

1. UPDATE empleados SET sueldo = 30000 WHERE num_empleado = '9223';

2. DELETE FROM EMPLEADOS WHERE NUM_EMPLEADO = '9223';

3. SELECT * FROM EMPLEADOS;

M.C. JOSÉ BENITO FRANCO URREA

TEMA RIO SEGU NDO EXA M EN PARC IAL

1. IDENTIFICA DE QUE TIP O DECLARA R IAS LOS SIG UIENTES DA T OS (VARCH A R, VARCHA R 2, DATE, NUM BER, BOLEA N):

‘1234 5 6’ ‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐ VARC HAR2, VARC H AR

21/03 / 2013 ‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐ DA T E

10.34 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐ N U MBER (2,2)

47689 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ NU MBER(7,0)

“14/0 2 /2013” ‐‐‐‐‐‐‐‐‐‐‐ VARC HAR2, VARC H AR

2. IDENTIFIC A LAS SIGU IENTES EXP RESIONES C OMO: DEC L ARACIÓN Y ASIGNACI ÓN DE UN V ALOR A VA RIABLE, E X PRESIÓN D E COMPA R ACIÓN, DE C LARACIÓN Y ASIGNACI Ó N DE VAL OR A UN A CONSTAN T E, DECLAR ACION DE LA VARIAB LE IDENTIFIC ANDO SOL O SU TIPO.

v_cvea lumno VARC HAR2 :=’542 3’; ‐‐‐‐‐‐‐ D

ECLARACIÓN Y ASIGNACIÓ N DE VALOR A VARIABLE

v_fech a DATE ; ‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

DECLARACI ÓN DE LA VAR IABLE IDENTIF ICANDO SOL O SU TIPO

v_nu m ero NUMBE R (2):=10; DE C

LARACIÓN Y ASIGNACIÓN D E VALOR A VA RIABLE

v_no m bre VARCHA R2(50):='Lau r a';‐‐ DECLA

RACIÓN Y AS IGNACIÓN DE V ALOR A VARI A BLE

consta nte CONSTA N T NUMBER: =100; DEC

LARACIÓN Y A SIGNACIÓN D E VALOR A CO NSTANTE

v_cvea lumno = v_l a clave; ‐‐ E X PRESIÓN DE COMPARAC IÓN

3. IDENTIFICA CUAL INSTR UCCIÓN DE O PERADORES DE CONJUN T OS PERTEN E CE EL RESULTAD O DE LA INST R UCCIÓN SEL ECT DE LOS S IGUIENTES C O NJUNTOS COMPARA T IVOS. (UNIO N, INTERSEC T , MINUS)

A= ALUMN O S

B = EMPLEAD OS

B A SE DATOS

T IVOS. (UNIO N, INTERSEC T , MINUS) A= ALUMN O S B = EMPLEAD OS
T IVOS. (UNIO N, INTERSEC T , MINUS) A= ALUMN O S B = EMPLEAD OS

M.C. J OSÉ BENITO F RANCO URR EA

A) SELECT NO MBRE, AP_P ATERNO, AP_ MATERNO FR OM ALUMNO

S

AP_PATERN O, AP_MATERN O FROM EMPL EADOS;

FR OM ALUMN O S AP_PATERN O, AP_MATERN O FROM EMPL EADOS; UNION S E LECT

UNION S

ELECT NOMBR E,

B) SELECT N OMBRE,AP_ PATERNO,A P_MATERN O FROM EM PLEADOS

INTE RSECT SE

LECT NOMB RE, AP_PAT ERNO, AP_ MATERNO F ROM ALUMN OS

L ECT NOMB RE, AP_PAT ERNO, AP_ M ATERNO F R OM ALUM N OS C)

C) SELECT NO MBRE,AP_PA TERNO,AP_M ATERNO FR OM ALUMNOS AP_PATERN O, AP_MATE RNO FROM E MPLEADOS

FR OM ALUMNOS AP_PATER N O, AP_MATE RNO FROM E MPLEADOS MINUS SE LECT NOMBR E,

MINUS SE

LECT NOMBR E,

M.C. J OSÉ BENITO F RANCO URR EA

EJERCICIO PRÁCTICO:

ESCRIBE LA ESTRUCTURA DE UNA TABLA DE TU PROYECTO FINAL Y ESCRIBE EL CÓDIGO PARA EJECUTAR UN CURSOR DE CONSULTA AVANZADA

ESTRUCTURA TABLA EMPLEADOS

UN CURSOR DE CONSULTA AVANZADA ESTRUCTURA TABLA EMPLEADOS ACCEPT eldepa PROMPT ' DIGITE EL NÚMERO DE

ACCEPT eldepa PROMPT 'DIGITE EL NÚMERO DE DEPTO: 1800-1805'

DECLARE

v_ndepa VARCHAR2(4) := TO_CHAR('&eldepa'); CURSOR cpuestos(v_departamento IN VARCHAR2) IS SELECT N_DPTO, NOMBRE, AP_PATERNO, PUESTO, TO_CHAR(SUELDO) FROM EMPLEADOS WHERE N_DPTO = v_departamento; v_ndpto VARCHAR2(5); v_nombre VARCHAR2(20); v_paterno VARCHAR2(20); v_puesto VARCHAR2(40); v_sueldo VARCHAR2(15);

BEGIN

OPEN cpuestos (v_ndepa);

LOOP

FETCH cpuestos INTO v_ndpto, v_nombre, v_paterno, v_puesto, v_sueldo;

EXIT WHEN cpuestos%NOTFOUND;

DBMS_OUTPUT.put_line(v_ndpto || ' ' ||TO_CHAR(v_sueldo) || ' ' || v_nombre || ' ' || v_paterno || ' ' || v_puesto);

END LOOP;

CLOSE cpuestos;

END;

M.C. JOSÉ BENITO FRANCO URREA

FIN

GRACIAS

FIN GRACIAS
FIN GRACIAS