Está en la página 1de 5

PROCEDIMIENTOS ALMACENADOS

Un procedimiento almacenado es un objeto perteneciente a una base de datos,


que contiene un conjunto de instrucciones SQL, tanto de consulta, como de
manipulación de datos, como de control de la secuencia del programa,
asociados a un nombre, y que son ejecutados en conjunto. Puede contener
parámetros tanto de entrada como de salida (parámetros pasados por
referencia), así como devolver un valor de retorno.

Son precompilados al ejecutarse por primera vez, y no vuelven a ser


compilados con las subsiguientes ejecuciones, lo que proporciona una cierta
mejora en el rendimiento. No obstante si se desea se puede forzar su
recompilación.

Una de las principales ventajas de este tipo de objetos, es que al residir en la


propia base de datos son compartibles por todos los usuarios, pudiendo de esta
manera beneficiarse de los distintos cachés del servidor. Al mismo tiempo al ser
código externo a la aplicación puede ser alterado sin que exista siempre la
necesidad de modificar el código de la misma.

Al ser objetos de la base de datos se hallan sujetos a los esquemas de


seguridad determinados por el administrador de la misma:

Existen diversas clases de procedimientos almacenados, entre los que se


encuentra los procedimientos almacenados del sistema, que sirven de
herramientas para la realización de distintas tareas de administración.

Un procedimiento almacenado se crea con la sentencia CREATE


PROCEDURE, que debe ser la única dentro de un mismo batch. La creación de
un procedimiento almacenado puede ser realizada bien desde el ISQL_W, bien
desde la opción Manage.Stored Procedures del Enterprise Manager, o bien
desde la propia ventana donde se muestran los objetos de la base de datos, en
el grupo correspondiente a los procedimientos almacenados, dentro de esta
última herramienta.

La sintaxis de dicha instrucción es básicamente la siguiente:

IF OBJECT_ID (' Nombre_del_procedimiento ',


'P' ) IS NOT NULL
DROP PROCEDURE Nombre_del_procedimiento;
GO
CREATE PROCEDURE Nombre_del_procedimiento
[ Lista_de_parámetros ]
AS
( Sentencias SQL )
[ RETURN [Valor ]]
Llamadas a procedimientos almacenados

La sintaxis de la llamada a un procedimiento almacenado, depende de como se


halla creado dicho procedimiento, por lo que en cada uno de los ejemplos que
siguen, se especifica la llamada al mismo, poniéndose de manifiesto dicha
sintaxis en cada caso particular.

Ejemplos

Para estos ejemplos se utilizara la base de datos BDINSPECCION.

Procedimiento 1

Es un procedimiento simple, en el cual se realiza solo una simpe consulta de la


tabla vehículos.

IF OBJECT_ID ('VEHICULOS_1', 'P' ) IS NOT NULL


DROP PROCEDURE VEHICULOS_1;
GO
CREATE PROCEDURE VEHICULOS_1
AS
SELECT *
FROM VEHICULO

Llamada:
EXECUTE VEHICULOS_1

Resultado:
Procedimiento 2

Es un procedimiento que recibe un parámetro de entrada, correspondiente a un


numero de placa, y devuelve los datos del vehículo al que pertenece esa placa.

IF OBJECT_ID ('VEHICULOS_2', 'P' ) IS NOT NULL


DROP PROCEDURE VEHICULOS_2;
GO
CREATE PROCEDURE VEHICULOS_2
@PLACA VARCHAR (10)
AS
SELECT *
FROM VEHICULO
WHERE @PLACA=PLACA

Llamada:
EXECUTE VEHICULOS_2 '1548TYH'

Resultado:

Procedimiento 3
Es un procedimiento que recibe un parámetro de entrada y uno de salida. El
parámetro de entrada corresponde a un numero de placa y el de salida, el CI
del propietario del vehiculo.

IF OBJECT_ID ('VEHICULOS_3', 'P' ) IS NOT NULL


DROP PROCEDURE VEHICULOS_3;
GO
CREATE PROCEDURE VEHICULOS_3
@PLACA VARCHAR (10),
@CI varchar(20) output
AS
SELECT @CI=p.CI
FROM VEHICULO v,PROPIETARIO p
WHERE @PLACA=v.PLACA and
v.ID_PROPIETARIO=p.ID_PROPIETARIO
RETURN;
Llamada:

DECLARE
@PLACA VARCHAR(10),
@CI VARCHAR(10)
BEGIN
SET @PLACA='1548TYH';
EXECUTE VEHICULOS_3 @PLACA,@CI OUTPUT;
print('El CI es: '+@CI);
END

Resultado:

DATOS ADICIONALES:

IF CASE
IF (<expression>)  CASE
BEGIN WHEN <expresion> = <valor_expresion>
... THEN <valor_devuelto>
END WHEN <expresion> = <valor_expresion>
ELSE THEN <valor_devuelto>
BEGIN ELSE <valor_devuelto> -- Valor por defecto
...
END END

WHILE
WHILE <expresión> 

BEGIN
      ...
END
EJERCICIO:

Generar la siguiente ficha con procedimientos

EJEMPLO 1:

------------------------------DATOS DEL
VEHICULO-------------------------------
===========================================================
====================
ID DEL PROPIETARIO: GQM7496836
NOMBRE DEL PROPIETARIO: GONZALO QUISPE MAMANI
===========================================================
====================
MARCA: ASTON MARTIN
MODELO: ASTON MARTIN-ION
CATEGORIA: PARTICULAR
PLACA: 6859NNB
TOTAL EN MULTAS: 404

EJEMPLO 2:

------------------------------DATOS DEL
VEHICULO-------------------------------
===========================================================
====================
ID DEL PROPIETARIO: ACT9586844
NOMBRE DEL PROPIETARIO: ABRAHAM CALLE TRUJILLO
===========================================================
====================
MARCA: CADILLAC
MODELO: CADILLAC-107
CATEGORIA: PARTICULAR
PLACA: 4510DFG
TOTAL EN MULTAS: 300

También podría gustarte