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
Comments
Post a Comment