Procedimientos almacenados SQL

Los procedimientos almacenados son una de las herramientas más versatiles en el uso del SQL, utilizándolos correctamente es una buena manera de sacar el máximo rendimineto del SGBD (sistema gestor de base de datos) y obtener un rendimiento óptimo en nuestras aplicaciones cliente servidor. Un procedimiento almacenado es un pequeño programa que se almacena en la base de datos y se puede ejecutar cuando se considere necesario mediante la llamada a este procedimiento. Estos “mini-programas” estan codificados en SQL adaptándonos a las reglas del SGBD con el que estemos trabajando.  La mejor definición que he encontrado para definirlos es la siguiente:”un conjunto deinstrucciones escritas en lenguaje Transact-SQL (T-SQL) compiladas y ejecutadasdentro de una base de datos relacional”.

Vamos a poner una ejemplo de como hacer un procedimiento almacenado y dejarlo almacenado en la BBDD para poder llamarlo cuando queramos. El ejemplo que trataremos es el de hacer un insert en una tabla de la BBDD.

CREATE PROCEDURE insertar_cliente @nombre varchar(100),
@apellido1 varchar(100),
@apellido2 varchar(100),
@nifCif varchar(20),
@fxNaciento datetime
AS

INSERT INTO CLIENTES(nombre, apellido1, apellido2, nifcif, fxnacimiento) VALUES
(
@nombre, @apellido1, @apellido2, @nifCif, @fxNaciento)

En el ejemplo creamos el procedure dándole un nombre y unos parametros de entrada, esto sería la cabecera del mismo. Para los parámetros de entrada debemos determinar el tipo de cada uno, ya sea varchar, datetime, etc… A continuación cuando damos paso con el comando AS tenemos el cuerpo de lo que deberá realizar el procedure con los paramentros que se le han pasado en la cabecera. En este caso realizaremos el inser con los valores que nos pasarán cuando se haga la llamada.

Para comprobar que el proceso esta bien hecho se puede ejecutar en el mismo SGBD sin necesidad de tener que programar y hacer la llamada desde un fichero. La manera es usando el comando exec. Viendo el procedimiento anterior esta podría ser la manera de llamarlo:

EXEC insertar_cliente ‘Pedro’, ‘Herrarte’, ‘Sanchez’, ‘00000002323′, convert(datetime, ‘13/05/1975′, 103)

Una vez realizado esto podremos confirmar si se ha hecho el insert mirando en la base de datos si se ha añadido este último registro.

Una vez tenemos el procedimiento almacenado en la base de datos también tendremos la opción de modificarlo usando el comando  ALTER PROCEDURE. Deberemos ir con cuidado cuando llamemos un procedimiento desde cualquier lenguaje, ya que se debe tener en cuenta que cada uno puede que trabaje diferente y debemos pasarle los parámetros necesarios para que éste se ejecute correctamente.

Podríamos estar comentando mas utilidades sobre los procedimientos almacenados, usos o funcionalidades, pero tal vez nos aproximemos un poco más a este mundo en un futuro post.

4 Comentarios en “Procedimientos almacenados SQL”

javier dice:

hola:
mira me pidieron que hiciera un procedimiento, en cual mesclara varias tablas, ademas tenia que sacar una cantidad x de datos por tablas y estos mostrarlos en una ventana emergente. me seria util tu ayuda, si es posible
de ante manos muchas gracias

atte. javier olivares

trenero dice:

Explica cuál es el problema para echarte una mano.

Un saludo

Dante dice:

Nesesito ayuda ¿Como mando parametros a un procedimiento almacendo de SQL server 2005 en JAVA ?

Roberto dice:

consulta_general (
pdepto IN VARCHAR2,
pcolumna IN VARCHAR2,
pfechaini IN DATE,
pfechafin IN DATE,
io_cursor OUT t_cursor
)
IS
v_cursor t_cursor;
BEGIN
OPEN v_cursor FOR
SELECT *
FROM websol.v_websol_consultagen
WHERE :pcolumna BETWEEN pfechaini AND pfechafin AND para_depto = pdepto;
END consulta_general;

Eso me compila pero no me funciona, queria saber, si yo puedo enviar mediante un parametro desde .NET a oracle el nombre de la tabla, gracias

Dejar un comentario

*