File

Anuncio
Reporte
Catedrático:
Procedimientos Almacenados
Ing. María Elena Reyes Castellanos
Alumnos:
Miguel Angel Garduño Cordova
Isaac Méndez Hernández
Índice General
Índice de tablas
2
Introducción
4
Objetivo
4
Desarrollo
5
Conclusiones
7
Observaciones
7
Glosario
8
Referencias
9
1
Índice de Imágenes
Imagen 1. Creación del procedimiento.
5
Imagen 2. Verificación antes de ejecutar el procedimiento.
5
Imagen 3. Verificación después de ejecutar el procedimiento.
5
Imagen 4. Procedimiento para mostrar una consulta.
6
Imagen 5. Procedimiento fallido.
6
Imagen 6. Declaración de variables.
6
Imagen 7. Ejecución Exitosa
7
Imagen 8. Muestreo de resultados.
7
2
INTRODUCCION
La presente practica representara el uso de procedimientos almacenados, es la
segunda parte después de la práctica de disparadores. Al igual que con la práctica
anteriormente dicha se usaran tablas por defecto ya creadas e igualmente se
recomienda leer los archivos del fundamento teórico, así como las fuentes de
información que se encuentran en la sección de referencias de la practica en curso.
OBJETIVO
Que el aprendiente pueda ser capaz de crear procedimientos y usarlos para futuras
transacciones en lugar de escribir todo el código nuevamente.
3
DESARROLLO
Un procedimiento almacenado no es más que una acción específica sobre una o
más tablas, la cual puede ejecutarse solo llamando al procedimiento en lugar de
escribir todo el código. Normalmente se usa para reducir tiempos y para los usuarios
que son ajenos al código.
La sintaxis de un procedimiento almacenado no varía demasiado de la de un
disparador a excepción que no tiene condiciones de activación y es porque se
activan manualmente a petición del usuario. Su sintaxis es:
1. CREATE [OR REPLACE] PROCEDURE
2.
3.
4.
5.
6.
7.
8.
<NOMBRE_PROCEDIMIENTO>[(<PARAMETRO1>[IN|OUT|IN|OUT]
<TIPO>,<PARAMETRO2>…)]
IS –DECLARA VARIABLES LOCALES
BEGIN
<SENTENCIAS A EJECUTAR>
[EXCEPCION]
<SENTENCIAS A EXCLUIR>
END <NOMBRE_PROCEDIMIENTO>;
/
Al igual que con los triggers el créate or replace es para crear o alterar un
procedimiento sin tener que borrarlo.
En los parámetros es similar a la creación de una clase en algún lenguaje de
programación ya que toma esos datos para la ejecución de las sentencias a ejecutar.
Es necesario especificar el tipo de dato de cada parámetro pero no su longitud. En
la especificación de los parámetros se puede elegir si son de entrada (IN), de salida
(OUT), o de entrada-salida (IN OUT). En caso de no especificar, el valor por defecto
es IN.
Como ya se mencionó antes, la sintaxis no se diferencia mucho de los disparadores
y las sentencias se colocan de la misma forma junto con las excepciones. Se termina
de la misma forma, con end y el nombre del procedimiento, y, en la línea de código,
con una barra para indicar la terminación la creación o reemplazo del procedimiento.
Como primer ejemplo existe una tabla llamada libros3 con los datos: autos, titulo,
editorial y precio. El procedimiento a crearse tiene que aumentar los precios en un
10%, entonces:
4
Imagen 1. Creación del procedimiento.
Y su respectiva comprobación.
Imagen 2. Verificación antes de ejecutar el procedimiento.
Imagen 3. Verificación después de ejecutar el procedimiento.
Para ejecutar un procedimiento se usa execute seguido del nombre del
procedimiento y punto y coma, lo anterior lo ejecuta pero aún se debe hacer una
consulta para comprobar. El precio aumento como se tenía planeado. Ahora bien
otra tabla llamada alumnos contiene los datos básicos de los alumnos de una
5
escuela tales como su número de control, nombre, apellido y calificaciones. El
procedimiento creado debe mostrar un alumno en específico y su promedio. La
sintaxis es un poco más complicada pero usa las mismas reglas. El procedimiento
varía en que ahora será necesario el uso de parámetros.
Imagen 4. Procedimiento para mostrar una consulta.
El primer parámetro es un valor de entrada (IN) que se especificara al momento de
ejecutar el procedimiento, indica en que registro buscar ya que identifica al número
de control. El segundo parámetro es un valor de salida (OUT) el cual solicita una
variable donde se colocaran los datos obtenidos. El resultado de la consulta se
obtiene de forma un poco diferente a como se efectúa alguna otra transacción dado
que para obtener el resultado es necesario introducirlo en la variable declarada c1
con “open c1 for” y después la consulta y todo esto dentro del begin.
Como con el insert, delete y update que utilizan datos en IN no requieren alguna
variable para ejecutarse pero no es el caso para un select ya que como devuelve
información necesita de un OUT.
Para ejecutar el procedimiento se utiliza execute y el nombre del procedimiento
seguido de los parámetros si es que posee alguno el procedimiento, para el caso
actual es necesario escribirlos.
Imagen 5. Procedimiento fallido.
Sin embargo la primera vez aparecerá un error y esto se debe a que no se ha
declarado una variable que se usa en el procedimiento. Para declararla se usa:
Imagen 6. Declaración de variables.
Las variables de este tipo son necesario declararlas antes de los procedimientos
pero una vez declaradas no es necesario hacerlo nuevamente, al menos, hasta el
reinicio de la aplicación o servidor. Con la variable ya iniciada se procede a la
ejecución del procedimiento.
6
Imagen 7. Ejecución Exitosa
El procedimiento se ejecuta y marca que fue ejecutado correctamente pero no
muestra nada más, lo anterior se debe a que se ejecutó pero se almaceno en la
variable declarada como OUT, como un resultado. Para ver el resultado es
necesario solicitar que se imprima la variable donde se encuentra tal resultado.
Imagen 8. Muestreo de resultados.
De esta forma se muestra el resultado sin tener que escribir todo el select
nuevamente, tan solo ejecutando el procedimiento y sus respectivos parámetros.
7
CONCLUSIONES
En conclusión, un procedimiento almacenado es un conjunto de
instrucciones ya pre hechas para la ejecución de transacciones de
forma más rápida. Basta con colocar los parámetros deseados para que
se ejecute la instrucción deseada sin necesidad de todo el código.
OBSERVACIONES
Una observación que cabe señalar es su diferencia con los triggers ya
que al no necesitar una condición, es necesario llamarlos cada vez que
se necesiten. Además un procedimiento ejecutara lo que se le tenga
como instrucciones pero no necesariamente mostrara resultados aun
así se haya ejecutado correctamente, para lograr esto último es
necesario el uso de variables.
8
GLOSARIO
Procedure: Se traduce como procedimiento. Es un algoritmo ya hecho
que solo ejecutara lo que tenga como instrucciones.
Execute: Literalmente Ejecutar
In: Especificación de la variable, indica entrada de datos.
Out: Especificación de la variable, indica salida de datos.
Cursor: Es una estructura de control utilizada para el recorrido de los
registros del resultado de una consulta.
9
REFERENCIAS
http://www.oracleya.com.ar/simulador/simulador.php?cod=250&punto52
http://es.wikipedia.org/wiki/Cursor_(base_de_datos)
10
Descargar