sábado, 29 de julio de 2017

Procedimientos Almacenados SQL

No hay comentarios.


El procedimiento almacenado (stored procedure) es un conjunto de comando SQL que pueden almacenarse en el servidor el cual ejecuta una acción o un conjunto de acciones.

En los procedimientos almacenados pueden contener instrucciones de lenguaje COF, como pueden contener muchas instrucciones distintas, puede haber instrucciones SELECT, INSERT, UPDATE, DELETE contenidas dentro de un procedimiento almacenado.

Sintaxis de creación, modificación y eliminado de los procedimientos almacenados.

Crear:
CREATE PROCEDURE <nombre>
(<Parametro><TipodeDato>,…n) 
AS
<Instruccion, operacion, etc.>
      
Modificar:
ALTER PROCEDURE <nombre>
(<Parametro><TipodeDato>,…n) 
AS
<Instruccion, operacion, etc.>

Borrar:
DROPPROCEDURE <nombre>

Ejemplos Prácticos.

Query para el siguiente ejemplo, tabla Personas.

CREATE TABLE Personas(
       PersId int PRIMARY KEY IDENTITY(1,1) NOT NULL,
       PersNombre nvarchar (80) NOT NULL,
       PersFecNacimiento datetime NULL,
       PersActivo bit NOT NULL
       )


Procedimiento almacenado para guardar o actualizar una Persona.

CREATE PROCEDUREagregarPersona
@Id INT,
@Nombre NVARCHAR(50),
@FecNac DATETIME,
@Activo bit
AS
IF NOT EXISTS (SELECT * FROMPersonas WHERE PersId = @Id)
BEGIN
       INSERT INTOPersonas
       VALUES (@Nombre,@FecNac,@Activo)
END
ELSE
BEGIN
       UPDATEPersonas SET
       PersNombre = @Nombre,
       PersFecNacimiento = @FecNac,
       PersActivo = @Activo
       WHEREPersId = @Id
END

Como se puede apreciar en el ejemplo anterior, el procedimiento almacenado, revisa si el Idexiste en la tabla Personas, en caso de no existir, ingresa una nueva Persona en la tabla y en caso de existir una persona con el Id, procede a actualizar los datos de la tabla.

CREATE PROCEDUREeliminarPersona
@IdPersona INT
AS
IF EXISTS (SELECT * FROMTelefonos WHERE PersId = @IdPersona)
BEGIN
       DELETE FROMTelefonos WHERE PersId = @IdPersona
END

DELETE FROM Personas WHERE PersId = @IdPersona

En el ejemplo anterior, podemos ver que al eliminar una Persona y este tiene una relación en otra tabla, lo primero que se realiza es eliminar los datos de la tabla relacionada para terminar de eliminar la Persona y este Id no esté relacionado en tablas secundarias.

Ejecutar un procedimiento almacenado dentro de SQL.

Los procedimientos almacenados al ser ejecutados pueden regresar un valor único, un conjunto de resultados o no regresan ningún valor y solo se encargan de procesar sus instrucciones.

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

Ejemplo sin regresar valor:
EXECagregarPersona @Id =1, @Nombre = 'Thom',@FecNac = '1997-06-16'@Activo = 1

EXECeliminarPersona @IdPersona =1

Ejemplo con retorno de resultados:

CREATE PROCEDURE ObtenerPersonas
AS
SELECT P.PersNombre,
       P.PersFecNacimiento,
       ISNULL(T.TeleNumero, 'S/T') Telefono
FROMPersonas P
LEFT JOIN Telefonos T ON P.PersId = T.PersId

EXEC ObtenerPersonas

Resultado:



Estos procedimientos almacenados son utilizados cuando se requiere mostrar informes al usuario, o generar reportes, con las instrucciones dentro de ellas podemos hacer cálculos de las tablas y regresar el valor ya sea en un informe o en la vista de nuestra aplicación.


Sigue este Blog desde Telegram: Clic aquí para unirte al canal

Compartir
Compartir

No hay comentarios. :

Publicar un comentario