Procedimientos almacenados en el esquema: creación de funciones y procedimientos PSM. Instrucciones simples en PSM. Instrucciones de bifurcación. Consultas en PSM. Excepciones en PSM.
BENEFICIOS DE LOS PROCEDIMIENTOS ALMACENADOS
Los procedimientos almacenados y funciones ofrecen varios beneficios para el desarrollo de aplicaciones, distribución y operación:
•
Sintaxis
SQL más flexible. Las rutinas almacenadas (procedimientos
almacenados) pueden ser escritas utilizando extensiones para la
sintaxis SQL, tales como composición de sentencias y construcciones
para el control de flujo, esto facilita la expresión de lógicas
complejas.
•
Capacidades
para el manejo de errores. Una rutina almacenada puede crear
manejadores de errores que son utilizados cuando surgen condiciones
excepcionales. La ocurrencia de un error no necesitará causar la
terminación de la rutina sino que puede ser manejada
apropiadamente.
•
Fácil
de mantener. Una única copia de una rutina es más fácil de
mantener que una copia insertada dentro de cada aplicación. La
actualización de aplicaciones es más fácil si todos utilizan una
rutina en común, debido a que si es necesario actualizar una sola
rutina, no todas las aplicaciones que la usan.
•
Los
clientes se benefician de las actualizaciones del servidor. La
actualización del servidor (upgrades) mejoran el desempeño de las
rutinas almacenadas que se ejecutan en el host. Esto mejora el
desempeño para las aplicaciones clientes que usan las rutinas aun
cuando las maquinas clientes no sean actualizadas. • Mejor
seguridad. Una rutina puede ser escrita para acceder datos sensibles
sobre el definidor de la rutina para el invocador de la rutina, pero
no retorna nada que el invocador no debería ver. Una rutina también
puede ser utilizada para modificar tablas de manera segura, sin darle
a los usuarios acceso directo a las tablas. Esto previene la
realización de cambios posiblemente no seguros sobre ellos.
DIFERENCIAS
ENTRE FUNCIONES Y PROCEDIMIENTOS
La
diferencia más general entre procedimientos y funciones es que son
invocados de forma diferente y son utilizadas para diferentes
propósitos:
•
Un
procedimiento no retorna un valor. En su lugar este es invocado con
una sentencia CALL para realizar una operación tales como la
modificación de una tabla o el procesamiento de registros
recuperados.
•
Una
función es invocada dentro de una expresión y retorna un solo valor
directamente al llamador para ser utilizado en la expresión. Es
decir, una función es utilizada en expresiones de la misma forma
como una constante, una función preconstruida, o una referencia a la
columna de una tabla.
•
No
se puede invocar una función con una sentencia CALL, ni se puede
invocar un procedimiento almacenado en una expresión. La sintaxis
para la creación de rutinas difiere algo para los procedimientos y
funciones:
•
Los
parámetros de procedimiento pueden ser definidos como de solo
entrada, solo salida, o para ambos entrada y salida. Esto significa
que un procedimiento puede pasar valores de regreso al llamador por
la utilización de parámetros de salida. Estos valores pueden ser
accedidos en sentencias que sigan la sentencia CALL. Las funciones
solo tienen parámetros de entrada. Como resultado, aunque ambos los
procedimientos y funciones pueden tener parámetros, la sintaxis de
declaración de parámetros de procedimiento difieren para las
funciones.
EJEMPLO:
//
CREATE PROCEDURE variables() BEGIN --Asignación de valores a
variables con SET --DECLARE var1, var2, var3 INT; --SET var1 = 1,
var2 = 2; --SET var3 = var1 + var2; -- Asignación de variables con
SELECT ... INTO DECLARE nombre_variable CHAR(50); DECLARE
cant_variable INT; SELECT nombre_cooperativa, cant_masculino INTO
nombre_variable, cant_variable FROM cooperativa WHERE
nombre_cooperativa = 'SUCRE'; SELECT nombre_variable, cant_variable;
END; // delimiter ; CALL variables(); 1.2
Cursor:
modificación por cursor. Protección contra modificaciones
concurrentes.
Cursores
Un cursor permite acceder un resultado (result set), una fila
(registro) a la vez. Debido a su orientación en filas, los cursores
a menudo son utilizados en ciclos (loops) que localizan y procesan
una fila dentro de cada iteración del ciclo.
La
implementación del cursor en MySQL tiene las siguientes propiedades:
este es proporcionado para cursores de solo lectura (read-only); no
pueden ser utilizados para modificar tablas. Los cursores solo
avanzan a través de un resultado fila por fila; no permiten ir hacia
atrás y luego hacia delatante libremente. Para usar un cursor en una
rutina almacenada, se debe escribir la sentencia DECLARE CURSOR que
nombra el cursor y asociarlo con una sentencia SELECT que produce un
resultado (result set): DECLARE cursor_name CURSOR FOR
select_statement Cada cursor declarado dentro de un bloque debe tener
un nombre diferente. Para abrir el cursor, coloque su nombre en una
sentencia OPEN. Esto ejecuta la sentencia SELECT asociada con el
cursor: OPEN cursor_name La sentencia FETCH localiza la próxima fila
o registro de un resultado de un cursor abierto. La sentencia nombra
el cursor y proporciona una lista de variables dentro del cual
localizará los valores de las columnas de la fila. Aquí debe estar
una variable por columna en el resultado (result set).
El
ambiente SQL: Ambientes. Esquemas. Catálogos. Clientes y servidores
en el ambiente SQL.Esquemas El esquema de la base de datos. Una
vez construido el esquema conceptual, el diseño de bases de datos
obliga a realizar varias tareas previas a la construcción del
esquema lógico global del sistema, también llamado esquema de bases
de datos. Por el momento, basta saber que el esquema de la base de
datos representa la descripción de los datos de la base de datos,
mientras que el esquema conceptual representaba a la realidad. La
primera de las tareas necesarias es la identificación de los datos
requeridos, para obtener como resultado las partes del área de
aplicación que deben representarse mediante datos, y en que forma
deben presentarse éstos a los usuarios.
Grupo 1
Acosta Zailuma
Aparicio Raul
Aray Lucio
Cedillo Javier
Bolivar Frank
Bolivar Freddy
Gomez Alexis
Gonzales Guillermo
Seccion 1, Trayecto 4, trimestre 1, Codigo PIAB413
Blog del Grupo 1
Acosta Zailuma
Aparicio Raul
Aray Lucio
Cedillo Javier
Bolivar Frank
Bolivar Freddy
Gomez Alexis
Gonzales Guillermo
Seccion 1, Trayecto 4, trimestre 1, Codigo PIAB413
Blog del Grupo 1
No hay comentarios:
Publicar un comentario