Lenguaje Transaccional en SQL
Lenguaje Transaccional en SQL
INTRODUCCIN........................................................................3
1. PROCEDIMIENTOS ALMACENADOS...........................................3
2. FUNCIONES..........................................................................19
3. TRIGGERS ...........................................................................21
2
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
INTRODUCCIN
1. PROCEDIMIENTOS ALMACENADOS
1 http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html (05/08/2013)
3
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
CREATE Nombre
(Parmetros)
PROCEDURE Procedimiento
Instrucciones SQL
Por cada uno de los parmetros que se requieran se debe hacer la siguiente
especificacin:
4
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
TRATAMIENTOS
TraNumero
TraFechaAsignado
TraDescripcion
TraFechaInicio
TraFechaFin
TraObservaciones
TraPaciente
MEDICOS
1 MedIdentificacion
MedNombres
MedApellidos
CITAS
CitNumero
CitFecha
PACIENTES
1 1 CitHora
PacIdentificacion
CitPaciente
PacNombres
CitMedico
PacApellidos
CitConsultorio
PacFechaNacimiento
CitEstado
PacSexo
CitObservaciones
CONSULTORIOS
1
ConNumero
ConNombre
5
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
6
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
citas
citas
consultorio
medicos
pacientes
tratamientos
listaconsultorios
Procedimiento almacenado
call <nombre_procedimiento>()
7
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
ConNumero ConNombre
1 Laboratorio Dental
2 Consultorio 1
3 Toma de muestras
mysql>
mysql>
mysql> call listaconsultorios();
8
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
Para este proceso, iniciemos con listar los datos de todas las pacientes
mujeres que estn registradas en la entidad pacientes, para este caso el
criterio de bsqueda es el campo sexo, que para este ejemplo se llama
PacSexo y como la condicin que es que sea mujer, este campo cuando
se construy la base de Datos, se declar como tipo enum, con opciones
M y F. Es importante aclarar que esta condicin es sensible a maysculas
y minsculas
9
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
10
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
La llamada al procedure,
Note que dentro del parntesis va Blanqueamiento Dental entre comilla sencilla,
por ser un campo tipo text y por ser el tipo de tratamiento que deseamos listar.
11
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
Los argumentos del procedimiento corresponden a los campos de la table, los tipos deben ser
iguales a los tipos de datos en la table. OJO deben llamarse diferente a los campos de la tabla
Intruccin SQL, NOTE que en los values se referencian los argumentos del procedimiento
12
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
13
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
14
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
15
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
16
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
a. c
lic en la icono Explorador de Objetos, opcin SQL, donde aparecer
el espacio para digitar la instruccin SQL correspondiente a la
creacin del procedimiento:
17
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
c. A
l final clic en el botn ejecutar, para que el procedure quede
grabado en el sistema.
Listar los datos de los pacientes que se han realizado como tratamiento
un Blanqueamiento Dental
18
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
2. FUNCIONES
Sintaxis:
delimeter//
CREATE FUNCTION nombre_funcion (parmetro)
Returns tipo
BEGIN
[caractersticas] definicin
END
//
19
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
Como ejemplo, se va a construir una funcin para que cuente los pacientes
que estn registrados en la tabla pacientes, la sintaxis sera la siguiente:
delimiter// Es muy importante realizar esta definicin, porque con l termina la declaracin de la funcin
CREATE FUNCTION contarpacientes() RETURNS int
select count(*) INTO cantidad FROM pacientes; Instruccin SQL para la consulta, note que se utiliz la palabra
reservada INTO para asignar la variable declarada anteriormente
RETURN cantidad
Se retorna el resultado generado por el count
END Fin de la programacin de la funcin
// Fin de la declaracin de la funcin
20
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
3. TRIGGERS
Los eventos que activan un trigger pueden ser las sentencias INSERT,
DELETE, UPDATE que pueden modifican los datos de una tabla. Los triggers
se pueden ejecutar antes (BEFORE) y/o despus (AFTER) de que sean
modificados los datos.
Los triggers tienen dos palabras clave, OLD y NEW que se refieren a
los valores que tienen las columnas antes y despus de la modificacin.
Los INSERT permiten NEW, los DELETE slo OLD y los UPDATE ambas.
Sintaxis:
21
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
<nombredelatabla>
FOR EACH ROW
BEGIN
<sentencias SQL>
END;
Para trabajar el tema de disparadores desde MySQL, se va a realizar
auditoria en la manipulacin de los datos para la tabla pacientes, esta
tabla tiene la siguiente estructura:
22
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
23
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
24
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
for each row Cada vez que se ejecute el update Tabla a la que se le est llevando la auditoria
25
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
for each row Cada vez que se ejecute el update Tabla a la que se le est llevando la auditoria
(audi_NombreAnterior,audi_ApellidAnterior,audi_FechaAnterior,
audi_SexoAnterior,audi_NombreNuevo,audi_ApellidoNuevo,
Campos en el estricto orden de la tabla de auditorias
audi_FechaNueva,audi_SexoNuevo,audi_FechaModificacion,
audi_usuario,audi_PacIdentificacion,audi_accion)
values
(old.PacNombres,old.PacApellidos,old.PacFechaNecimiento,oldPacSexo Todos los campos de la tabla auditada, "pacientes" llevan
la palabra old, para conservar los datos que fueron eliminados
now(), current_user(), old. PacIdentificacion,'Registro Eliminado');
Por ejemplo, Un paciente informa que su nombre est mal escrito y solicita
que sea cambiado su nombre C@rlos Eurelio, por el correcto, Carlos
Aurelio. El campo que se manejara con el old, por ser el dato inicial,
seria C@rlos Eurelio, y el que se manejara con el new seria Carlos
Aurelio.
26
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
27
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
1. E
l nombre normalmente se convierte a maysculas, excepto si se
activa la opcin de Mantener Maysculas/Minsculas.
2. E
l punto de arranque de un disparador, es Antes o despus de
ejecutar una instruccin SQL
3. L
as opciones corresponden a la instruccin SQL a ejecutar, como
se puede observar puede Oracle permite todas las clausulas SQL
para manipulacin de las tablas.
4. Es muy importante que est activa la opcin para cada fila, porque
28
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
esto nos permite, que cada vez que se ejecute la instruccin SQL,
se active el disparador.
5. E
l cdigo utilizado en el cuerpo del disparador debe contener la
instruccin para insertar el respectivo registro en la tabla creada
para la auditoria, para nuestro ejemplo auditoria_pacientes,
con los campos en el respectivo orden para guardar el histrico.
Recuerde que existen las palabras reservadas old(informacin
actual, not que antes de la palabra old van dos puntos) y new
(para la nueva captura, igual antes de la palabra new, van los dos
puntos).
29
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
Se debe hacer clic en el boto activar, para que el asistente nos permita
activar el respectivo disparador, probablemente aparezca ms de un
disparador para activar.
30
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
31
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
32
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
33
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
34
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Lenguaje Transaccional en SQL
35
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
GLOSARIO
INTOUT : Indica que el parmetro del trigger ser tanto de Entrada como
de salida
Trigger: Disparador
36
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
BIBLIOGRAFA
37
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Control de documento
Construccin Objeto de Aprendizaje
Lenguaje Transaccional en SQL
Desarrollador de contenido Magda Milena Garca Gamboa
Experto temtico
Asesor pedaggico Rafael Neftal Lizcano Reyes
Produccin Multimedia Luis Fernando Botero Mendoza
William Fernando Ramrez V.
Programadores Daniel Eduardo Martnez
Lder expertos temticos Ana Yaqueline Chavarro Parra
Lder lnea de produccin Santiago Lozada Garcs
38
FAVA - Formacin en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje