Sesion 13 - Procedimientos Almacenados

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Base de Datos II Ingeniería de Sistemas

Sesión 10
Procedimientos Almacenados

Ing. Victor Hugo Tapia Jacinto Pag. 116


Base de Datos II Ingeniería de Sistemas

PROCEDIMIENTOS ALMACENADOS

Un procedimiento almacenado es una colección de sentencia SQL, que están guardadas en el


servidor. Estas son un método de encapsular tareas repetitivas que se ejecutan eficazmente.

Los procedimientos almacenados pueden:

• Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida


al lote o al procedimiento que realiza la llamada.
• Contener instrucciones de programación que realice las operaciones en la base de datos,
incluidas las llamadas a otros procedimientos.
• Devolver un valor de estado a un lote o a un procedimiento que realiza una llamada para
indicar si la operación se ha realizado correctamente o hubo un error (y el motivo del
mismo).

Beneficios de los procedimientos almacenados:

• Simplifican la ejecución de tareas repetitivas


• Corren más rápido que las mismas instrucciones ejecutadas en forma interactiva
• Reducen el tráfico a través de la red
• Pueden capturar errores antes que ellos puedan entrar a la base de datos Establece
consistencia porque ejecuta las tareas de la misma forma Permite el desarrollo modular de
aplicaciones
• Ayuda a proveer seguridad
• Puede forzar reglas y defaults complejos de los negocios

Ventajas de los procedimientos:

• Un procedimiento almacenado se ejecuta más rápido que un batch porque: El


procedimiento almacenado ya ha sido analizado
• Ya se han resuelto las referencias a los objetos referenciados en el procedimiento
almacenado
• No se necesita construir el árbol de búsqueda, él usa el que se hace en el momento de
compilarlo
• No se necesita crear un plan de búsqueda, porque ya el procedimiento tiene uno.

Ing. Victor Hugo Tapia Jacinto Pag. 117


Base de Datos II Ingeniería de Sistemas

PROCEDIMIENTOS ALMACENADOS DEL SISTEMA

En esta ocasión mostraré algunos procedimientos almacenados y vistas del sistema.

Cómo ver el contenido de un procedimiento almacenado en SQL Server?:

sp_helptext 'nombre_procedimiento'

Ejemplo.

Cómo puedo ver que usuarios están usando SQL Server ?:

Ejecute el:

Nota: También puede utilizar Sp_who2

Ing. Victor Hugo Tapia Jacinto Pag. 118


Base de Datos II Ingeniería de Sistemas

Cómo puedo ver las bases de datos creadas en SQL Server ?:

También puede utilizar

Nota: Antes de ejecutar la sentencia debemos de seleccionar el Esquema Master.

Cómo puedo ver todos los objetos (tablas, vistas, procedimientos almacenados, triggers,
funciones) de una base de datos SQL Server?

Ing. Victor Hugo Tapia Jacinto Pag. 119


Base de Datos II Ingeniería de Sistemas

También puede utilizar

Nota: Antes de ejecutar la sentencia debemos de seleccionar el Esquema Master.

Cómo puedo ver todas las tablas de usuario de una base de datos SQL Server?

Ing. Victor Hugo Tapia Jacinto Pag. 120


Base de Datos II Ingeniería de Sistemas

Cómo puedo ver todas los triggers de una base de datos SQL Server ?

Cómo puedo ver todos los usuarios de una base de datos SQL Server ?

Ing. Victor Hugo Tapia Jacinto Pag. 121


Base de Datos II Ingeniería de Sistemas

PROCEDIMIENTOS ALMACENADOS DEFINIDOS POR EL USUARIO

Para crear un procedimiento almacenado debemos emplear la sentencia CREATE PROCEDURE.

CREATE {PROC|PROCEDURE} [NombreEsquema.]NombreProcedimiento

[{@parametro tipo} [VARYING] [= valorPredet] [OUT|OUTPUT] ] [,...n]

AS { <bloque_instrucciones> [ ...n] }[;]

<bloque_instrucciones> ::=

{[BEGIN] instrucciones [END] }

Y si queremos modificar una Base de datos?

ALTER PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]

AS

-- Sentencias del procedure

Las instrucciones CREATE PROCEDURE no se pueden combinar con otras instrucciones SQL en el
mismo lote.

Después del verbo CREATE PROCEDURE indicamos el nombre del procedimiento,


opcionalmente podemos incluir el nombre del esquema donde queremos que se cree el
procedimiento, por defecto se creará en dbo. Ya que SqlServer utiliza el prefijo sp_ para nombrar
los procedimientos del sistema se recomienda no utilizar nombres que empiecen por sp_.

Como se puede deducir de la sintaxis (no podemos indicar un nombre de base de datos asociado
al nombre del procedimiento) sólo se puede crear el procedimiento almacenado en la base de datos
actual, no se puede crear en otra base de datos.

Si queremos definir un procedimiento temporal local el nombre deberá empezar por una
almohadilla (#) y si el procedimiento es temporal global el nombre debe de empezar por ##.

Ing. Victor Hugo Tapia Jacinto Pag. 122


Base de Datos II Ingeniería de Sistemas

El nombre completo de un procedimiento almacenado o un procedimiento almacenado temporal


global, incluidas ##, no puede superar los 128 caracteres. El nombre completo de un
procedimiento almacenado temporal local, incluidas #, no puede superar los 116 caracteres.

Transact-SQL permite abreviar la palabra reservada PROCEDURE por PROC sin que ello afecte a
la funcionalidad de la instrucción.

CREATE PROC Calcula_comision AS…

Es equivalente a

CREATE PROCEDURE calcula_comision AS…

Para modificar un procedimiento almacenado debemos emplear la sentencia ALTER


PROCEDURE.

Procedimiento básico

Para la ejecutar un procedimiento almacenado debemos utilizar la sentencia EXEC. Cuando la


ejecución del procedimiento almacenado es la primera instrucción del lote, podemos omitir el uso
de EXEC.

Y si envío un Parámetro de Entrada?

Y como consulto desde una Tabla de la Base de datos?

Ing. Victor Hugo Tapia Jacinto Pag. 123


Base de Datos II Ingeniería de Sistemas

Y si es con Parámetro de Entrada?

Y si deseo utilizar un parámetro de Salida?

Dijimos que los procedimientos almacenados pueden devolver información; para ello se emplean
parámetros de salida. El valor se retorna a quien realizó la llamada con parámetros de salida. Para
que un procedimiento almacenado devuelva un valor se debe declarar una variable con la palabra
clave "output" al crear el procedimiento:

Create Procedure NOMBREPROCEDIMIENTO

@PARAMETROENTRADA TIPO =VALORPORDEFECTO,

@PARAMETROSALIDA TIPO=VALORPORDEFECTO output

as

SENTENCIAS

select @PARAMETROSALIDA=SENTENCIAS;

Los parámetros de salida pueden ser de cualquier tipo de datos, excepto text, ntext e image.

Creamos un procedimiento almacenado al cual le enviamos 2 números y retorna el promedio:

Ing. Victor Hugo Tapia Jacinto Pag. 124


Base de Datos II Ingeniería de Sistemas

Al ejecutarlo también debe emplearse "OUTPUT":

Declaramos una variable para guardar el valor devuelto por el procedimiento; ejecutamos el
procedimiento enviándole 2 valores y mostramos el resultado.

La instrucción que realiza la llamada al procedimiento debe contener un nombre de variable para
almacenar el valor retornado.

Ejemplo 2:

Creamos un procedimiento almacenado que muestre las titulos, editorial y precio (Según Fecha) de
las publicaciones de una determinada distribuidora (enviado como parámetro de entrada) y nos
retorne la suma y el promedio de los precios de todas las publicaciones de la distribuidora
enviada:

Ejecutamos el procedimiento y vemos el contenido de las variables en las que almacenamos los
parámetros de salida del procedimiento:

Ing. Victor Hugo Tapia Jacinto Pag. 125


Base de Datos II Ingeniería de Sistemas

Ing. Victor Hugo Tapia Jacinto Pag. 126

También podría gustarte