SlideShare una empresa de Scribd logo
1 de 20
PROCEDIMIENTOS ALMACENADOS
DEFINICIÓN:
Un procedimiento almacenado (store procedure) es un programa (o procedimiento) el cual es
almacenado físicamente en una base de datos. Generalmente son escritos en un lenguaje de
bases de datos propietario como SQL. La ventaja de un procedimiento almacenado es que, al ser
ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de
bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso
directo a los datos que necesita manipular y solo necesita enviar sus resultados de regreso al
usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos
salientes y entrantes.
Los procedimientos, se usan para realizar consultas SQL sobre los objetos de la base de datos de
una manera abstracta. Un procedimiento almacenado permite agrupar en forma exclusiva parte
de algo específico que se desee realizar y SQL es apropiado para dicha acción.
SINTAXIS:
Los procedimientos almacenados pueden recibir y devolver información; para ello
se emplean parámetros, de entrada y salida, respectivamente.
Los parámetros de entrada posibilitan pasar información a un procedimiento.
Para que un procedimiento almacenado admita parámetros de entrada se deben
declarar variables como parámetros al crearlo. La sintaxis es:
CREATE PROCEDURE NombreProcedimiento
@NOMBREPARAMETRO TIPO =VALORPORDEFECTO
as SENTENCIAS;
Los parámetros se definen luego del nombre del procedimiento, comenzando el nombre con un
signo arroba (@). Los parámetros son locales al procedimiento, es decir, existen solamente dentro
del mismo. Pueden declararse varios parámetros por procedimiento, se separan por comas.
Cuando el procedimiento es ejecutado, deben explicitarse valores para cada uno de los
parámetros (en el orden que fueron definidos), a menos que se haya definido un valor por defecto,
en tal caso, pueden omitirse. Pueden ser de cualquier tipo de dato (excepto cursor).
Luego de definir un parámetro y su tipo, opcionalmente, se puede especificar un valor por defecto;
tal valor es el que asume el procedimiento al ser ejecutado si no recibe parámetros. Si no se
coloca valor por defecto, un procedimiento definido con parámetros no puede ejecutarse sin
valores para ellos. El valor por defecto puede ser "null" o una constante
 Creamos un procedimiento que recibe el nombre de un autor como parámetro para mostrar
todos los libros del autor solicitado:
create procedure pa_libros_autor
@autor varchar(30)
as
select titulo, editorial,precio
from libros
where autor= @autor;
 El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del
procedimiento y un valor para el parámetro:
exec pa_libros_autor 'Borges';
 Creamos un procedimiento que recibe 2 parámetros, el nombre de un autor y el de una editorial:
create procedure pa_libros_autor_editorial
@autor varchar(30),
@editorial varchar(20)
as
select titulo, precio
from libros
where autor= @autor and
editorial=@editorial;
 El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del procedimiento y los
valores para los parámetros separados por comas:
exec pa_libros_autor_editorial 'Richard Bach','Planeta';
Los valores de un parámetro pueden pasarse al procedimiento mediante el nombre del parámetro o
por su posición. La sintaxis anterior ejecuta el procedimiento pasando valores a los parámetros por
posición. También podemos emplear la otra sintaxis en la cual pasamos valores a los parámetros por
su nombre:
exec pa_libros_autor_editorial @editorial='Planeta', @autor='Richard Bach';
Cuando pasamos valores con el nombre del parámetro, el orden en que se colocan puede alterarse.
Si queremos ejecutar un procedimiento que permita omitir los valores para los parámetros debemos
definir valores por defecto para cada parámetro:
create procedure pa_libros_autor_editorial2
@autor varchar(30)='Richard Bach',
@editorial varchar(20)='Planeta'
as
select titulo, autor,editorial,precio
from libros
where autor= @autor and
editorial=@editorial;
ADMINISTRACIÓN DE PROCEDIMIENTOS ALMACENADOS (Creación,
Modificación y Eliminación):
 CREACIÓN DE UN PROCEDIMIENTO ALMACENADO:
Los procedimientos almacenados se crean con la instrucción CREATE PROCEDURE.
Considere los hechos siguientes cuando cree procedimientos almacenados:
Los procedimientos almacenados pueden hacer referencia a tablas, vistas, funciones
definidas por el usuario y otros procedimientos almacenados, así como a tablas
temporales.
Si un procedimiento almacenado crea una tabla local temporal, la tabla temporal sólo
existe para atender al procedimiento almacenado y desaparece cuando finaliza la
ejecución del mismo.
Una instrucción CREATE PROCEDURE no se puede combinar con otras instrucciones de
Transact-SQL en un solo proceso.
Sintaxis:
CREATE PROCEDURE nombreProcedimiento [ ; número ]
[ { @tipoDatos procedimiento }
[ VARYING ] [ = predeterminado ] [ OUTPUT ]
WITH
RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION
FOR REPLICATION
AS instrucciónSql
 MODIFICACIÓN DE UN PROCEDIMIENTO ALMACENADO:
Para modificar un procedimiento almacenado existente y conservar la asignación de los
permisos, use la instrucción ALTER PROCEDURE.
SQL Server sustituye la definición anterior del procedimiento almacenado cuando se modifica con
ALTER PROCEDURE.
ALTER PROCEDURE nombreProcedimiento [ ; número ]
[ { @tipoDatos parámetro }
[ VARYING ] [ = valorPredeterminado ] [ OUTPUT ]
] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION
}
]
[ FOR REPLICATION ]
AS
instrucciónSQL [...n]
 ELIMINACIÓN DE UN PROCEDIMIENTO ALMACENADO:
La instrucción DROP PROCEDURE se utiliza para quitar procedimientos almacenados
definidos por el usuario de la base de datos actual.
DROP PROCEDURE { procedimiento } [ ,...n ]
EJEMPLOS:
 Procedimiento almacenado para guardar un nuevo cliente:
CREATE PROCEDURE spCliente_N
@dniruc varchar(11),
@contacto varchar(30),
@ciudad varchar(20),
@direccion varchar(30),
@telefono varchar(20),
@email varchar(20),
@usuario varchar(20),
@clave varchar(20),
@observacion varchar(50)
AS INSERT INTO clientes values
(@dniruc,@contacto,@ciudad,@direccion,@telefono,@email,@usuario,@clave,@observacion)
GO
 Procedimiento almacenado para modificar un cliente:
CREATE PROCEDURE spCliente_M
@dniruc varchar(11),
@compania varchar(20),
@contacto varchar(30),
@ciudad varchar(20),
@direccion varchar(30),
@telefono varchar(20),
@email varchar(20),
@usuario varchar(20),
@clave varchar(20),
@observacion varchar(50)
as Update clientes set dniruc = @dniruc, compania = @compania, contacto = @contacto,
ciudad = @ciudad, direccion = @direccion, telefono = @telefono, email = @email, usuario =
@usuario, clave = @clave, observacion = @observacion where dniruc = @dniruc
GO
 Procedimiento almacenado para eliminar un cliente.
CREATE PROCEDURE spCliente_E @dniruc char(11) as DELETE FROM clientes
WHERE dniruc = @dniruc
GO
RESUMEN:
Un Procedimiento Almacenado es un programa auto controlado escrito en lenguaje del DBMS,
son almacenados como parte de la Base de Datos y sus metadatos.
Una vez creado un procedimiento almacenado, se puede invocar directamente desde una
aplicación, o sustituir el nombre de una tabla o vista, por el nombre de procedimiento en
cláusulas SELECT. Los procedimientos almacenados pueden recibir parámetros de entrada y
retornar valores a la aplicación.
Las ventajas de usar los procedimientos almacenados incluyen:
 Diseño modular.
 Aplicaciones que acceden la misma Base de Datos pueden compartir los procedimientos
almacenados, eliminando el código doble y reduciendo el tamaño de las aplicaciones.
 El fácil mantenimiento.
 Cuando un procedimiento se actualiza, los cambios se reflejan automáticamente en todas las
aplicaciones, sin la necesidad de recompilar y relinkear. Las aplicaciones son compiladas sólo
una vez para cada cliente.
 Los procedimientos almacenados son ejecutados por el servidor, no por el cliente lo que reduce
el tráfico en la red y mejora el performance o desempeño, especialmente para el acceso del
cliente remoto.
Un procedimiento almacenado es una colección con nombre de instrucciones de TransactSQL que
se almacena en el servidor. Los procedimientos almacenados son un método para encapsular
tareas repetitivas. Admiten variables declaradas por el usuario, ejecución condicional y otras
características de programación muy eficaces.
SQL Server admite cinco tipos de procedimientos almacenados:
 Procedimientos almacenados del sistema (sp_): Almacenados en la base de datos master e
identificados mediante el prefijo sp_, proporcionan un método efectivo de recuperar información de
las tablas del sistema. Permiten a los administradores del sistema realizar tareas de administración
de la base de datos que actualizan las tablas del sistema, aunque éstos no tengan permiso para
actualizar las tablas subyacentes directamente. Los procedimientos almacenados del sistema se
pueden ejecutar en cualquier base de datos.
 Procedimientos almacenados locales: Los procedimientos almacenados locales se crean en las
bases de datos de los usuarios individuales.
 Procedimientos almacenados temporales: Los procedimientos almacenados temporales pueden
ser locales, con nombres que comienzan por un signo de almohadilla (#), o globales, con nombres
que comienzan por un signo de almohadilla doble (##). Los procedimientos almacenados temporales
locales están disponibles en la sesión de un único usuario, mientras que los procedimientos
almacenados temporales globales están disponibles para las sesiones de todos los usuarios.
 Procedimientos almacenados remotos: Los procedimientos almacenados remotos
son una característica anterior de SQL Server. Las consultas distribuidas admiten ahora
esta funcionalidad.
 Procedimientos almacenados extendidos (xp_): Los procedimientos almacenados extendidos
se implementan como bibliotecas de vínculos dinámicos (DLL, Dynamic-Link Libraries) que se
ejecutan fuera del entorno de SQL Server. Se identifican mediante el prefijo xp. Se ejecutan de
forma similar a los procedimientos almacenados. Los procedimientos almacenados en SQL Server
son similares a los procedimientos de otros lenguajes de programación ya que pueden:
 Contener instrucciones que realizan operaciones en la base de datos; incluso tienen la capacidad
de llamar a otros procedimientos almacenados.
 Aceptar parámetros de entrada.
 Devolver un valor de estado a un procedimiento almacenado o a un proceso por lotes que realiza
la llamada para indicar que se ha ejecutado correctamente o que se ha producido algún error, y la
razón del mismo.
RECOMENDACIONES:
 Ante consultas complejas y que se utilizan en varias ocasiones, se pueden crear vistas para
un manejo más adecuado.
 Utilice la sentencia Try para capturar adecuadamente los errores en tiempo de ejecución
dentro del stored procedure y hacer un manejo acorde en dicha situación.
 Evite utilizar sub-consultas (SELECT A.column1 FROM (SELECT data1 FROM) as A …),
utilice la sentencia INNER JOIN siempre que sea posible.
 No escriba el nombre del stored procedure comenzando con el prefijo “sp_”, esto es
reservado para los sotred procedures de sistema de SQL Server. Cuando se hace la
solicitud de un stored procedure que comienza con ese prefijo el motor de base de datos
intenta buscar primero en la base de datos “master” y luego en las demás.
 Utilice cursores solo cuando es necesario. Los cursores requieren más memoria y por tanto
se degrada el rendimiento del stored procedure. En algunos casos se puede utilizar la variable
de tabla y el bucle WHILE para iterar sobre un el conjunto de resultados.
 Utilice la sentencia SELECT TOP 1 para la comprobación/obtención de un dato en base a una
condición.
 En los casos donde se puede aplicar una instrucción CASE es mejor que el anidamiento de
sentencias IF-ELSE.
 Utilice las instrucciones ORDER BY y DISTINCT solo cuando se requieran. Caso contrario el
motor de SQL Server obtendrá el primer resultado y lo hará de nuevo si requiere utilizar
algunas de estas instrucciones.
 Utilice tablas temporales solamente cuando es necesario. Los stored procedure suelen utilizar
un plan de ejecución, almacenado en caché, para aumentar el rendimiento, cuando se utilizan
tablas temporales se requiere hacer la compilación en cada ejecución y no se puede
aprovechar el plan de ejecución.
CONCLUCIONES:
Los procedimientos almacenados permiten aprovechar los recursos del servidor; ahorrar tiempo
creando consultas complejas desde el servidor y permiten interactuar con otros objetos de una Base de
Datos como: Triggers, Generadores y Tablas.
Los procedimientos almacenados son instrucciones que se utilizan para ejecutar una acción y quedan
guardadas en el servidor.
Los procedimientos almacenados permiten aprovechar los recursos del servidor, ahorrar tiempo
creando consultas complejas desde el servidor y permiten interactuar con otros objetos de InterBase-
triggers, generadores, excepciones, tablas y vistas-. Por lo tanto, es importante para todo desarrollador
que utilice InterBase el utilizarlos correctamente y saber todo lo que se puede hacer con ellos.
Uno de los procedimientos más usados en el diseño de la base de datos, son los Procedimiento
almacenados, puesto que nos permiten agilizar los procesos de consultas de datos, aumentar la
seguridad, reutilizar código y permiten desarrollo de software más ágil evitar hacer más código.
 Los procedimientos empiezan con el prefijo sp_, puesto que aparecen lógicamente
en todas las bases de datos definidas por el usuario y por el sistema.
 Se pueden ejecutar desde cualquier base de datos sin necesidad de calificar
totalmente el nombre del procedimiento.
 Un procedimiento no debe sobrepasar las 400 líneas de código. En caso de que
tengas un procedimiento demasiado grande es más adecuado particionarlo. Tener
en cuenta que las tablas temporales y transacciones se mantienen en
procedimientos dependientes.
APRECIACIÓN DEL EQUIPO:

Más contenido relacionado

La actualidad más candente

Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosAngel Vázquez Patiño
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datosJorge Garcia
 
Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,GQ Vargas
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de DatosDARKGIRL93
 
Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.Julicamargo
 
Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Jair Ospino Ardila
 
instruccion de control
instruccion de controlinstruccion de control
instruccion de controlluiseldrumer
 
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...Uriel Herrera
 
Diccionario de base de datos
Diccionario de base de datosDiccionario de base de datos
Diccionario de base de datosalexis armas
 

La actualidad más candente (20)

Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,Normalización 1 fn,2fn,3fn,4fn,
Normalización 1 fn,2fn,3fn,4fn,
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Manual sql server parte 1
Manual sql server parte 1Manual sql server parte 1
Manual sql server parte 1
 
Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.
 
Guía de ejercicios de normalizacion
Guía de ejercicios de normalizacionGuía de ejercicios de normalizacion
Guía de ejercicios de normalizacion
 
Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL
 
Taller de Base de Datos - Unidad 5 transacciones
Taller de Base de Datos - Unidad 5  transaccionesTaller de Base de Datos - Unidad 5  transacciones
Taller de Base de Datos - Unidad 5 transacciones
 
Sistema de Archivos
Sistema de ArchivosSistema de Archivos
Sistema de Archivos
 
instruccion de control
instruccion de controlinstruccion de control
instruccion de control
 
Recursividad
RecursividadRecursividad
Recursividad
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Analisis Algoritmo
Analisis AlgoritmoAnalisis Algoritmo
Analisis Algoritmo
 
Automatas de pila
Automatas de pilaAutomatas de pila
Automatas de pila
 
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
13 tipos de diagramas uml, la metodología de desarrollo ágil de software y la...
 
Diccionario de base de datos
Diccionario de base de datosDiccionario de base de datos
Diccionario de base de datos
 

Similar a PROCEDIMIENTOS ALMACENADOS

Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Categorias de Procedimientos Almacenados
Categorias de Procedimientos AlmacenadosCategorias de Procedimientos Almacenados
Categorias de Procedimientos AlmacenadosCarlos Pereda Miñano
 
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videosPROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videosJuanMiguelCustodioMo
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenadosHarold Perez
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggersLuis Jherry
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
Procedimientos almacenados..mañana
Procedimientos almacenados..mañanaProcedimientos almacenados..mañana
Procedimientos almacenados..mañanaANilez Solrak
 
Teoria procedimientos almacenados
Teoria procedimientos almacenadosTeoria procedimientos almacenados
Teoria procedimientos almacenadoshirmaroxana13
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005oswchavez
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosJosé Antonio Sandoval Acosta
 

Similar a PROCEDIMIENTOS ALMACENADOS (20)

Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Procedimientos almacenados en MySQL
Procedimientos almacenados en MySQLProcedimientos almacenados en MySQL
Procedimientos almacenados en MySQL
 
Pa
PaPa
Pa
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Categorias de Procedimientos Almacenados
Categorias de Procedimientos AlmacenadosCategorias de Procedimientos Almacenados
Categorias de Procedimientos Almacenados
 
Sql procedimientos-almacenados
Sql procedimientos-almacenadosSql procedimientos-almacenados
Sql procedimientos-almacenados
 
procedimientos almacenados
procedimientos almacenadosprocedimientos almacenados
procedimientos almacenados
 
. procedimientos almacenados
.  procedimientos almacenados.  procedimientos almacenados
. procedimientos almacenados
 
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videosPROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
PROCEDIMIENTOS ALMACNEADOS Y DISPARADORES - Informe de los videos
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Ms SQL Server
Ms SQL ServerMs SQL Server
Ms SQL Server
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Jdbc
JdbcJdbc
Jdbc
 
Procedimientos almacenados..mañana
Procedimientos almacenados..mañanaProcedimientos almacenados..mañana
Procedimientos almacenados..mañana
 
Teoria procedimientos almacenados
Teoria procedimientos almacenadosTeoria procedimientos almacenados
Teoria procedimientos almacenados
 
IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005IntroduccióN A Sql Server 2005
IntroduccióN A Sql Server 2005
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
 
Programacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datosProgramacion de base de datos - unidad 3 Programacion de base de datos
Programacion de base de datos - unidad 3 Programacion de base de datos
 

Más de Lisbeth Ocaña Bueno (20)

OLAP - Procesamiento Analítico en Línea.
OLAP - Procesamiento Analítico en Línea.OLAP - Procesamiento Analítico en Línea.
OLAP - Procesamiento Analítico en Línea.
 
COPIA DE SEGURIDAD Y RESTAURACIÓN.
COPIA DE SEGURIDAD Y RESTAURACIÓN.COPIA DE SEGURIDAD Y RESTAURACIÓN.
COPIA DE SEGURIDAD Y RESTAURACIÓN.
 
TRANSACCIONES
TRANSACCIONESTRANSACCIONES
TRANSACCIONES
 
CURSORES EN SQL SERVER
CURSORES EN SQL SERVERCURSORES EN SQL SERVER
CURSORES EN SQL SERVER
 
Comandos DDL
Comandos DDLComandos DDL
Comandos DDL
 
VISTAS
VISTASVISTAS
VISTAS
 
LENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQLLENGUAJE TRANSACT - SQL
LENGUAJE TRANSACT - SQL
 
Ejecutables en Netbeans
Ejecutables en NetbeansEjecutables en Netbeans
Ejecutables en Netbeans
 
REPORTES
REPORTESREPORTES
REPORTES
 
Objeto sqlcommand
Objeto sqlcommandObjeto sqlcommand
Objeto sqlcommand
 
OBJETO CONNECTION
OBJETO CONNECTIONOBJETO CONNECTION
OBJETO CONNECTION
 
ESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENT
ESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENTESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENT
ESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENT
 
Ado.net
Ado.netAdo.net
Ado.net
 
Gestor de Base de Datos.
Gestor de Base de Datos.Gestor de Base de Datos.
Gestor de Base de Datos.
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Aplicaciones n capas en visual.net
Aplicaciones n capas en visual.netAplicaciones n capas en visual.net
Aplicaciones n capas en visual.net
 
Prepared statement
Prepared statementPrepared statement
Prepared statement
 
JTABLE
JTABLEJTABLE
JTABLE
 
RESULTSET
RESULTSETRESULTSET
RESULTSET
 
Statement
StatementStatement
Statement
 

PROCEDIMIENTOS ALMACENADOS

  • 1.
  • 3. DEFINICIÓN: Un procedimiento almacenado (store procedure) es un programa (o procedimiento) el cual es almacenado físicamente en una base de datos. Generalmente son escritos en un lenguaje de bases de datos propietario como SQL. La ventaja de un procedimiento almacenado es que, al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y solo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes. Los procedimientos, se usan para realizar consultas SQL sobre los objetos de la base de datos de una manera abstracta. Un procedimiento almacenado permite agrupar en forma exclusiva parte de algo específico que se desee realizar y SQL es apropiado para dicha acción.
  • 4. SINTAXIS: Los procedimientos almacenados pueden recibir y devolver información; para ello se emplean parámetros, de entrada y salida, respectivamente. Los parámetros de entrada posibilitan pasar información a un procedimiento. Para que un procedimiento almacenado admita parámetros de entrada se deben declarar variables como parámetros al crearlo. La sintaxis es: CREATE PROCEDURE NombreProcedimiento @NOMBREPARAMETRO TIPO =VALORPORDEFECTO as SENTENCIAS;
  • 5. Los parámetros se definen luego del nombre del procedimiento, comenzando el nombre con un signo arroba (@). Los parámetros son locales al procedimiento, es decir, existen solamente dentro del mismo. Pueden declararse varios parámetros por procedimiento, se separan por comas. Cuando el procedimiento es ejecutado, deben explicitarse valores para cada uno de los parámetros (en el orden que fueron definidos), a menos que se haya definido un valor por defecto, en tal caso, pueden omitirse. Pueden ser de cualquier tipo de dato (excepto cursor). Luego de definir un parámetro y su tipo, opcionalmente, se puede especificar un valor por defecto; tal valor es el que asume el procedimiento al ser ejecutado si no recibe parámetros. Si no se coloca valor por defecto, un procedimiento definido con parámetros no puede ejecutarse sin valores para ellos. El valor por defecto puede ser "null" o una constante
  • 6.  Creamos un procedimiento que recibe el nombre de un autor como parámetro para mostrar todos los libros del autor solicitado: create procedure pa_libros_autor @autor varchar(30) as select titulo, editorial,precio from libros where autor= @autor;  El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del procedimiento y un valor para el parámetro: exec pa_libros_autor 'Borges';  Creamos un procedimiento que recibe 2 parámetros, el nombre de un autor y el de una editorial: create procedure pa_libros_autor_editorial @autor varchar(30), @editorial varchar(20) as select titulo, precio from libros where autor= @autor and editorial=@editorial;
  • 7.  El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del procedimiento y los valores para los parámetros separados por comas: exec pa_libros_autor_editorial 'Richard Bach','Planeta'; Los valores de un parámetro pueden pasarse al procedimiento mediante el nombre del parámetro o por su posición. La sintaxis anterior ejecuta el procedimiento pasando valores a los parámetros por posición. También podemos emplear la otra sintaxis en la cual pasamos valores a los parámetros por su nombre: exec pa_libros_autor_editorial @editorial='Planeta', @autor='Richard Bach'; Cuando pasamos valores con el nombre del parámetro, el orden en que se colocan puede alterarse. Si queremos ejecutar un procedimiento que permita omitir los valores para los parámetros debemos definir valores por defecto para cada parámetro: create procedure pa_libros_autor_editorial2 @autor varchar(30)='Richard Bach', @editorial varchar(20)='Planeta' as select titulo, autor,editorial,precio from libros where autor= @autor and editorial=@editorial;
  • 8. ADMINISTRACIÓN DE PROCEDIMIENTOS ALMACENADOS (Creación, Modificación y Eliminación):  CREACIÓN DE UN PROCEDIMIENTO ALMACENADO: Los procedimientos almacenados se crean con la instrucción CREATE PROCEDURE. Considere los hechos siguientes cuando cree procedimientos almacenados: Los procedimientos almacenados pueden hacer referencia a tablas, vistas, funciones definidas por el usuario y otros procedimientos almacenados, así como a tablas temporales. Si un procedimiento almacenado crea una tabla local temporal, la tabla temporal sólo existe para atender al procedimiento almacenado y desaparece cuando finaliza la ejecución del mismo.
  • 9. Una instrucción CREATE PROCEDURE no se puede combinar con otras instrucciones de Transact-SQL en un solo proceso. Sintaxis: CREATE PROCEDURE nombreProcedimiento [ ; número ] [ { @tipoDatos procedimiento } [ VARYING ] [ = predeterminado ] [ OUTPUT ] WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION FOR REPLICATION AS instrucciónSql  MODIFICACIÓN DE UN PROCEDIMIENTO ALMACENADO: Para modificar un procedimiento almacenado existente y conservar la asignación de los permisos, use la instrucción ALTER PROCEDURE.
  • 10. SQL Server sustituye la definición anterior del procedimiento almacenado cuando se modifica con ALTER PROCEDURE. ALTER PROCEDURE nombreProcedimiento [ ; número ] [ { @tipoDatos parámetro } [ VARYING ] [ = valorPredeterminado ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION } ] [ FOR REPLICATION ] AS instrucciónSQL [...n]  ELIMINACIÓN DE UN PROCEDIMIENTO ALMACENADO: La instrucción DROP PROCEDURE se utiliza para quitar procedimientos almacenados definidos por el usuario de la base de datos actual. DROP PROCEDURE { procedimiento } [ ,...n ]
  • 11. EJEMPLOS:  Procedimiento almacenado para guardar un nuevo cliente: CREATE PROCEDURE spCliente_N @dniruc varchar(11), @contacto varchar(30), @ciudad varchar(20), @direccion varchar(30), @telefono varchar(20), @email varchar(20), @usuario varchar(20), @clave varchar(20), @observacion varchar(50) AS INSERT INTO clientes values (@dniruc,@contacto,@ciudad,@direccion,@telefono,@email,@usuario,@clave,@observacion) GO
  • 12.  Procedimiento almacenado para modificar un cliente: CREATE PROCEDURE spCliente_M @dniruc varchar(11), @compania varchar(20), @contacto varchar(30), @ciudad varchar(20), @direccion varchar(30), @telefono varchar(20), @email varchar(20), @usuario varchar(20), @clave varchar(20), @observacion varchar(50) as Update clientes set dniruc = @dniruc, compania = @compania, contacto = @contacto, ciudad = @ciudad, direccion = @direccion, telefono = @telefono, email = @email, usuario = @usuario, clave = @clave, observacion = @observacion where dniruc = @dniruc GO
  • 13.  Procedimiento almacenado para eliminar un cliente. CREATE PROCEDURE spCliente_E @dniruc char(11) as DELETE FROM clientes WHERE dniruc = @dniruc GO RESUMEN: Un Procedimiento Almacenado es un programa auto controlado escrito en lenguaje del DBMS, son almacenados como parte de la Base de Datos y sus metadatos. Una vez creado un procedimiento almacenado, se puede invocar directamente desde una aplicación, o sustituir el nombre de una tabla o vista, por el nombre de procedimiento en cláusulas SELECT. Los procedimientos almacenados pueden recibir parámetros de entrada y retornar valores a la aplicación. Las ventajas de usar los procedimientos almacenados incluyen:  Diseño modular.
  • 14.  Aplicaciones que acceden la misma Base de Datos pueden compartir los procedimientos almacenados, eliminando el código doble y reduciendo el tamaño de las aplicaciones.  El fácil mantenimiento.  Cuando un procedimiento se actualiza, los cambios se reflejan automáticamente en todas las aplicaciones, sin la necesidad de recompilar y relinkear. Las aplicaciones son compiladas sólo una vez para cada cliente.  Los procedimientos almacenados son ejecutados por el servidor, no por el cliente lo que reduce el tráfico en la red y mejora el performance o desempeño, especialmente para el acceso del cliente remoto. Un procedimiento almacenado es una colección con nombre de instrucciones de TransactSQL que se almacena en el servidor. Los procedimientos almacenados son un método para encapsular tareas repetitivas. Admiten variables declaradas por el usuario, ejecución condicional y otras características de programación muy eficaces.
  • 15. SQL Server admite cinco tipos de procedimientos almacenados:  Procedimientos almacenados del sistema (sp_): Almacenados en la base de datos master e identificados mediante el prefijo sp_, proporcionan un método efectivo de recuperar información de las tablas del sistema. Permiten a los administradores del sistema realizar tareas de administración de la base de datos que actualizan las tablas del sistema, aunque éstos no tengan permiso para actualizar las tablas subyacentes directamente. Los procedimientos almacenados del sistema se pueden ejecutar en cualquier base de datos.  Procedimientos almacenados locales: Los procedimientos almacenados locales se crean en las bases de datos de los usuarios individuales.  Procedimientos almacenados temporales: Los procedimientos almacenados temporales pueden ser locales, con nombres que comienzan por un signo de almohadilla (#), o globales, con nombres que comienzan por un signo de almohadilla doble (##). Los procedimientos almacenados temporales locales están disponibles en la sesión de un único usuario, mientras que los procedimientos almacenados temporales globales están disponibles para las sesiones de todos los usuarios.
  • 16.  Procedimientos almacenados remotos: Los procedimientos almacenados remotos son una característica anterior de SQL Server. Las consultas distribuidas admiten ahora esta funcionalidad.  Procedimientos almacenados extendidos (xp_): Los procedimientos almacenados extendidos se implementan como bibliotecas de vínculos dinámicos (DLL, Dynamic-Link Libraries) que se ejecutan fuera del entorno de SQL Server. Se identifican mediante el prefijo xp. Se ejecutan de forma similar a los procedimientos almacenados. Los procedimientos almacenados en SQL Server son similares a los procedimientos de otros lenguajes de programación ya que pueden:  Contener instrucciones que realizan operaciones en la base de datos; incluso tienen la capacidad de llamar a otros procedimientos almacenados.  Aceptar parámetros de entrada.  Devolver un valor de estado a un procedimiento almacenado o a un proceso por lotes que realiza la llamada para indicar que se ha ejecutado correctamente o que se ha producido algún error, y la razón del mismo.
  • 17. RECOMENDACIONES:  Ante consultas complejas y que se utilizan en varias ocasiones, se pueden crear vistas para un manejo más adecuado.  Utilice la sentencia Try para capturar adecuadamente los errores en tiempo de ejecución dentro del stored procedure y hacer un manejo acorde en dicha situación.  Evite utilizar sub-consultas (SELECT A.column1 FROM (SELECT data1 FROM) as A …), utilice la sentencia INNER JOIN siempre que sea posible.  No escriba el nombre del stored procedure comenzando con el prefijo “sp_”, esto es reservado para los sotred procedures de sistema de SQL Server. Cuando se hace la solicitud de un stored procedure que comienza con ese prefijo el motor de base de datos intenta buscar primero en la base de datos “master” y luego en las demás.
  • 18.  Utilice cursores solo cuando es necesario. Los cursores requieren más memoria y por tanto se degrada el rendimiento del stored procedure. En algunos casos se puede utilizar la variable de tabla y el bucle WHILE para iterar sobre un el conjunto de resultados.  Utilice la sentencia SELECT TOP 1 para la comprobación/obtención de un dato en base a una condición.  En los casos donde se puede aplicar una instrucción CASE es mejor que el anidamiento de sentencias IF-ELSE.  Utilice las instrucciones ORDER BY y DISTINCT solo cuando se requieran. Caso contrario el motor de SQL Server obtendrá el primer resultado y lo hará de nuevo si requiere utilizar algunas de estas instrucciones.  Utilice tablas temporales solamente cuando es necesario. Los stored procedure suelen utilizar un plan de ejecución, almacenado en caché, para aumentar el rendimiento, cuando se utilizan tablas temporales se requiere hacer la compilación en cada ejecución y no se puede aprovechar el plan de ejecución.
  • 19. CONCLUCIONES: Los procedimientos almacenados permiten aprovechar los recursos del servidor; ahorrar tiempo creando consultas complejas desde el servidor y permiten interactuar con otros objetos de una Base de Datos como: Triggers, Generadores y Tablas. Los procedimientos almacenados son instrucciones que se utilizan para ejecutar una acción y quedan guardadas en el servidor. Los procedimientos almacenados permiten aprovechar los recursos del servidor, ahorrar tiempo creando consultas complejas desde el servidor y permiten interactuar con otros objetos de InterBase- triggers, generadores, excepciones, tablas y vistas-. Por lo tanto, es importante para todo desarrollador que utilice InterBase el utilizarlos correctamente y saber todo lo que se puede hacer con ellos. Uno de los procedimientos más usados en el diseño de la base de datos, son los Procedimiento almacenados, puesto que nos permiten agilizar los procesos de consultas de datos, aumentar la seguridad, reutilizar código y permiten desarrollo de software más ágil evitar hacer más código.
  • 20.  Los procedimientos empiezan con el prefijo sp_, puesto que aparecen lógicamente en todas las bases de datos definidas por el usuario y por el sistema.  Se pueden ejecutar desde cualquier base de datos sin necesidad de calificar totalmente el nombre del procedimiento.  Un procedimiento no debe sobrepasar las 400 líneas de código. En caso de que tengas un procedimiento demasiado grande es más adecuado particionarlo. Tener en cuenta que las tablas temporales y transacciones se mantienen en procedimientos dependientes. APRECIACIÓN DEL EQUIPO: