Procedimientos Almacenados en SQL Server: Insertar Personas con Validación de DNI y Parámetros Opcionales

Informática3,51 KB

Procedimientos almacenados para añadir personas (BD de prueba)

En este ejercicio vamos a crear varios procedimientos almacenados para añadir personas a la tabla PERSONAS de una base de datos de prueba.

1. Procedimiento básico para añadir personas

Creamos un procedimiento que inserta los datos de una persona sin ninguna validación:

CREATE PROCEDURE AÑADIR_PERSONA
@DNI CHAR(8),
@NOMBRE VARCHAR(30),
@DIRECCION VARCHAR(35),
@TELEFONO CHAR(9),
@FECNAC DATETIME,
@CIUDAD VARCHAR(15)
AS
BEGIN
INSERT INTO PERSONAS
(DNI,NOMBRE,DIRECCION,TELEFONO,FECNAC,CIUDAD) VALUES (@DNI,@NOMBRE,@DIRECCION,@TELEFONO,@FECNAC,@CIUDAD)
END

2. Procedimiento que evita DNI duplicados

En este caso, nos aseguramos de que no exista previamente el DNI antes de insertar el registro:

CREATE PROCEDURE AÑADIR_PERSONA_DNIDUPLICADO
@DNI CHAR(8),
@NOMBRE VARCHAR(30),
@DIRECCION VARCHAR(35),
@TELEFONO CHAR(9),
@FECNAC DATETIME,
@CIUDAD VARCHAR(15)
AS
BEGIN
IF @DNI NOT IN (SELECT DNI FROM PERSONAS)
BEGIN
INSERT INTO PERSONAS
(DNI,NOMBRE,DIRECCION,TELEFONO,FECNAC,CIUDAD) VALUES (@DNI,@NOMBRE,@DIRECCION,@TELEFONO,@FECNAC,@CIUDAD)
END
ELSE
PRINT 'DNI DUPLICADO'
END

Ejecución del procedimiento

DECLARE @FECHA DATETIME
SET @FECHA=CONVERT(DATETIME,'12/3/1999', 103)

-- Ejecutar
EXEC AÑADIR_PERSONA_DNIDUPLICADO '76654206','SERGIO','ENCINAR','637718526',@FECHA,'GRANADA'
EXEC AÑADIR_PERSONA_DNIDUPLICADO '76654207','ANTONIO','ENCINAR','637718526',@FECHA,'GRANADA'

3. Procedimiento con parámetros opcionales

Los parámetros opcionales se definen asignándoles el valor NULL por defecto, de forma que pueden omitirse al ejecutar el procedimiento:

CREATE PROCEDURE AÑADIR_PERSONA_PARAMETROPCIONALES
@DNI CHAR(8),
@NOMBRE VARCHAR(30),
@DIRECCION VARCHAR(35),
@TELEFONO CHAR(9),
@FECNAC DATETIME = NULL, -- Parámetro opcional
@CIUDAD VARCHAR(15) = NULL -- Parámetro opcional
AS
BEGIN
IF @DNI NOT IN (SELECT DNI FROM PERSONAS)
BEGIN
INSERT INTO PERSONAS
(DNI,NOMBRE,DIRECCION,TELEFONO,FECNAC,CIUDAD) VALUES (@DNI,@NOMBRE,@DIRECCION,@TELEFONO,@FECNAC,@CIUDAD)
END
ELSE
PRINT 'DNI DUPLICADO'
END

Ejecución sin pasar la fecha ni la ciudad

DECLARE @FECHA DATETIME
SET @FECHA=CONVERT(DATETIME,'12/3/1999', 103)

-- Ejecutar sin pasar la fecha y la ciudad
EXEC AÑADIR_PERSONA_PARAMETROPCIONALES '76654209','SERGIO','ENCINAR','637718526'
EXEC AÑADIR_PERSONA_PARAMETROPCIONALES '76654208','ANTONIO','ENCINAR','637718526'

4. Procedimiento con valor por defecto

En este procedimiento, la ciudad toma el valor 'GRANADA' si no se especifica al ejecutarlo:

CREATE PROCEDURE AÑADIR_PERSONA_PARAMETRODEFECTO2
@DNI CHAR(8),
@NOMBRE VARCHAR(30),
@DIRECCION VARCHAR(35),
@TELEFONO CHAR(9),
@FECNAC DATETIME = NULL, -- Parámetro opcional
@CIUDAD VARCHAR(15) = 'GRANADA' -- Valor por defecto
AS
BEGIN
IF @DNI NOT IN (SELECT DNI FROM PERSONAS)
BEGIN
INSERT INTO PERSONAS
(DNI,NOMBRE,DIRECCION,TELEFONO,FECNAC,CIUDAD) VALUES (@DNI,@NOMBRE,@DIRECCION,@TELEFONO,@FECNAC,@CIUDAD)
END
ELSE
PRINT 'DNI DUPLICADO'
END

Ejecución sin pasar la fecha ni la ciudad

DECLARE @FECHA DATETIME
SET @FECHA=CONVERT(DATETIME,'12/3/1999', 103)

-- Ejecutar sin pasar la fecha y la ciudad
EXEC AÑADIR_PERSONA_PARAMETRODEFECTO2 '76654210','SERGIO','ENCINAR','637718526'
EXEC AÑADIR_PERSONA_PARAMETRODEFECTO2 '76654208','ANTONIO','ENCINAR','637718526'

Descargar

PDF Word HTML