Procedimientos Almacenados SQL



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:
DROP PROCEDURE <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 PROCEDURE agregarPersona
@Id INT,
@Nombre NVARCHAR(50),
@FecNac DATETIME,
@Activo bit
AS
IF NOT EXISTS (SELECT * FROM Personas WHERE PersId = @Id)
BEGIN
       INSERT INTO Personas
       VALUES (@Nombre,@FecNac,@Activo)
END
ELSE
BEGIN
       UPDATE Personas SET
       PersNombre = @Nombre,
       PersFecNacimiento = @FecNac,
       PersActivo = @Activo
       WHERE PersId = @Id
END

Como se puede apreciar en el ejemplo anterior, el procedimiento almacenado, revisa si el Id existe 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 PROCEDURE eliminarPersona
@IdPersona INT
AS
IF EXISTS (SELECT * FROM Telefonos WHERE PersId = @IdPersona)
BEGIN
       DELETE FROM Telefonos 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:
EXEC agregarPersona @Id = 1, @Nombre = 'Thom', @FecNac = '1997-06-16' @Activo = 1

EXEC eliminarPersona @IdPersona = 1

Ejemplo con retorno de resultados:

CREATE PROCEDURE ObtenerPersonas
AS
SELECT P.PersNombre,
       P.PersFecNacimiento,
       ISNULL(T.TeleNumero, 'S/T') Telefono
FROM Personas 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

Comments

Week's Hit

Jobs SQL Server P1

Funciones SQL Server

Trigger SQL Server