7/23/2019 Problemas resueltos sobre Procedimientos almacenados
1/21
Todo sobre procedimientos almacenados y triggers
http://www.sqlserverya.com.ar/index.php?inicio=125
) Sacar todos los empleados que se dieron de alta entre una determinada fecha inicial
y fecha final y que pertenecen a un determinado departamento.
?
1
2
!
5
"
#
CREATEPROCEDUREFECHASDEPT
@FINICIAL DATETIME,
@FFINAL SMALLDATETIME ,
@DEPT_NO NVARCHAR(10)
AS
SELECT* FROMEMP WHEREFECHA_ALT BETWEEN@FINICIAL AND@FFINAL
ANDDEPT_NO = @DEPT_NO
?
1 EXECFECHASDEPT '01011!"#','01011!$#',%0
2) Crear procedimiento que inserte un empleado.
http://www.sqlserverya.com.ar/index.php?inicio=125http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.sqlserverya.com.ar/index.php?inicio=1257/23/2019 Problemas resueltos sobre Procedimientos almacenados
2/21
?
1
2
!
5
"
#
$
%
1&
11
12
1
1!
15
1"
1#
1$
1%
CREATEPROCEDUREINSERTA_EMPLEADO
@EMP_NO INT,
@APELLIDO NVARCHAR(%0),
@OFICIO NVARCHAR(%0),
@DIR INT,
@FECHA_ALT SMALLDATETIME,
@SALARIO INT,
@COMISION INT,
@DEPT_NO INT
AS
INSERTINTOEMP VALUES
(@EMP_NO,
@APELLIDO,
@OFICIO,
@DIR,
@FECHA_ALT,
@SALARIO,
@COMISION,
@DEPT_NO)
?
1 EXECINSERTA_EMPLEADO &$!#,'SUARE','EMPLEADO',0,'%"0#%01#',1"000,0,%0
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
3/21
3) Crear un procedimiento que recupere el nombre, nmero y nmero de personas a
partir del nmero de departamento.
?
1
2
!
5
CREATEPROCEDURENUMEMP_DEPT @NDEP SMALLINT
ASSELECTCOUNT(*) ASNUM EMPLEADOS, DEPT_NO
FROMEMP
WHEREDEPT_NO = @NDEP
ROUPB+DEPT_NO
?
1 EXECNUMEMP_DEPT 0
4) Crear un procedimiento igual que el anterior, pero que recupere tambin las
personas que traba!an en dicho departamento, pas"ndole como par"metro el nombre.
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
4/21
?
1
2
!
5
"
#
$
%
1&
11
12
1
1!
15
1"
CREATEPROCEDUREPERSONASDEPT @DEPT NVARCHAR(0)
AS
SELECTE-DEPT_NO ASNUMERO DEPT
, D-DNOMBRE ASNOMBRE, COUNT(*) ASNUMERO EMPLEADOS
FROMEMP ASE
INNER.OINDEPT ASD
ONE-DEPT_NO = D-DEPT_NO
WHERED-DNOMBRE = @DEPT
ROUPB+D-DNOMBRE, E-DEPT_NO
SELECTE-DEPT_NO ASN/ DEPARTAMENTO
, D-DNOMBRE ASDEPARTAMENTO
, E-APELLIDO, E-SALARIO
FROMEMP ASE
INNER.OINDEPT ASD
ONE-DEPT_NO = D-DEPT_NO
WHERED-DNOMBRE = @DEPT
?
1 EXECPERSONASDEPT 'CONTABILIDAD'
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
5/21
#) Crear procedimiento para de$ol$er salario, oficio y comisi%n, pas"ndole el apellido.
?
1
2
CREATEPROCEDURESALARIO_OFICIO @PAPELLIDO NVARCHAR(%0) AS
SELECTOFICIO, SALARIO, COMISION FROMEMP WHEREAPELLIDO = @PAPELLIDO
?
1 EXECSALARIO_OFICIO 'ARCIA'
&) 'gual que el anterior, pero si no le pasamos ningn $alor, mostrar" los datos de
todos los empleados.
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
6/21
?
1
2
CREATEPROCEDUREOFICIOSALARIO @PAPELLIDO NVARCHAR(%0) =''AS
SELECTOFICIO, SALARIO, COMISION FROMEMP WHEREAPELLIDO LIE@PAPELLIDO
?
1 EXECOFICIOSALARIO 'SUARE'
() Crear un procedimiento para mostrar el salario, oficio, apellido y nombre del
departamento de todos los empleados que contengan en su apellido el $alor que le
pasemos como par"metro.
?
1
2
CREATEPROCEDURESALARIO_OFICIOLIE @PAPELLIDO VARCHAR(%0) = 'RE+'AS
SELECTOFICIO, SALARIO, COMISION FROMEMP WHEREAPELLIDO LIE''2 @PAPELLIDO 2 '
?
1 EXECSALARIO_OFICIOLIE 'S'
'arte 2
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-1-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
7/21
!ercicios de procedimientos almacenados en S*+
Ser$er 2 de 2
-egresar al ndice
/) Crear un procedimiento que recupere el nmero departamento, el nombre y nmero
de empleados, d"ndole como $alor el nombre del departamento, si el nombre
introducido no es $"lido, mostraremos un mensa!e informati$o comunic"ndolo.
?
1
2
!
5
"
#
$
%
1&
11
12
1
1!
15
1"
1#
1$
CREATEPROCEDUREDEPARTAMENTO @DEPT NVARCHAR(0)
AS
DECLARE@DEPTDEF NVARCHAR(0)
SET@DEPTDEF = NULL
SELECT@DEPTDEF = DNOMBRE FROMDEPT
WHEREDNOMBRE = @DEPT
IF (@DEPTDEF ISNULL)
PRINT 'DEPARTAMENTO INTRODUCIDO NO VALIDO3 '2 @DEPT
ELSE
BEIN
SELECTE-DEPT_NO ASNUMERO DEPT
, D-DNOMBRE ASNOMBRE, COUNT(*) ASNUMERO EMPLEADOS
FROMEMP ASE
INNER.OINDEPT ASD
ONE-DEPT_NO = D-DEPT_NO
WHERED-DNOMBRE = @DEPT
ROUPB+D-DNOMBRE, E-DEPT_NO
END
http://www.ingenieriasystems.com/2014/01/Manual-de-Microsoft-SQL-Server-Full-Transact-SQL.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2014/01/Manual-de-Microsoft-SQL-Server-Full-Transact-SQL.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
8/21
?
1 EXECDEPARTAMENTO 'VENTAS'
0) Crear un procedimiento para de$ol$er un informe sobre los empleados de la plantilla
de un determinado hospital, sala, turno o funci%n. l informe mostrar" nmero de
empleados, media, suma y un informe personali1ado de cada uno que muestre
nmero de empleado, apellido y salario.
?
1
2
!
5
"
#
$
%
1&
11
12
CREATEPROCEDUREEMPPLANTILLA
@VALOR NVARCHAR(0)
AS
DECLARE@CONSULTA NVARCHAR(0)
SELECT@CONSULTA = NOMBRE
FROMHOSPITAL
WHERENOMBRE = @VALOR
IF (@CONSULTA ISNULL)
BEIN
SELECT@CONSULTA = NOMBRE FROMSALA
WHERENOMBRE = @VALOR
IF (@CONSULTA ISNULL)
BEIN
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
9/21
1
1!
15
1"
1#
1$
1%
2&
21
22
2
2!
25
2"
2#
2$
2%
&
1
2
!
5
"
#
$
%
!&
SELECT@CONSULTA = T FROMPLANTILLA
WHERET = @VALOR
IF (@CONSULTA ISNULL)
BEIN
SELECT@CONSULTA = FUNCION FROMPLANTILLA
WHEREFUNCION = @VALOR
IF (@CONSULTA ISNULL)
BEIN
PRINT 'EL VALOR INTRODUCIDO NO ES UN
HOSPITAL, SALA, TURNO O FUNCI4N3 '2 @VALOR
PRINT 'VERIFI5UE LOS DATOS INTRODUCIDOS'
END
ELSE
BEIN
PRINT 'FUNCION'
SELECTFUNCION ASTURNO
,AV(SALARIO) ASMEDIA
,COUNT(EMPLEADO_NO) ASN/ EMPLEADOS
,SUM(SALARIO) ASSUMA FROMPLANTILLA
ROUPB+FUNCION
HAVINFUNCION = @VALOR
SELECTEMPLEADO_NO ASN/ EMPLEADO
,APELLIDO, SALARIO, FUNCION
FROMPLANTILLA
WHEREFUNCION = @VALOR
END
END
ELSE
BEIN
PRINT 'TURNO'
7/23/2019 Problemas resueltos sobre Procedimientos almacenados
10/21
!1
!2
!
!!
!5
!"
!#
!$
!%
5&
51
52
5
5!
55
5"
5#
5$
5%
"&
"1
"2
"
"!
"5
""
"#
"$
SELECTT ASTURNO
,AV(SALARIO) ASMEDIA
,COUNT(EMPLEADO_NO) ASN/ EMPLEADOS
,SUM(SALARIO) ASSUMA FROMPLANTILLA
ROUPB+T
HAVINT = @VALOR
SELECTT ASTURNO
,EMPLEADO_NO ASN/ EMPLEADO
,APELLIDO, SALARIO
FROMPLANTILLA
WHERET = @VALOR
END
END
ELSE
BEIN
PRINT 'SALA'
SELECTS-NOMBRE ASSALA
,AV(P-SALARIO) ASMEDIA
,COUNT(P-EMPLEADO_NO) ASN/ EMPLEADOS
,SUM(P-SALARIO) ASSUMA FROMPLANTILLA ASP
INNER.OINSALA ASS
ONS-HOSPITAL_COD = P-HOSPITAL_COD
ROUPB+S-NOMBRE
HAVINS-NOMBRE = @VALOR
SELECTS-NOMBRE ASSALA
,P-EMPLEADO_NO ASN/ EMPLEADO
,P-APELLIDO, P-SALARIO
FROMPLANTILLA ASP
INNER.OINSALA ASS
ONS-HOSPITAL_COD = P-HOSPITAL_COD
7/23/2019 Problemas resueltos sobre Procedimientos almacenados
11/21
"%
#&
#1
#2
#
#!
#5
#"
##
#$
#%
$&
$1
$2
$
$!
$5
$"
$#
$$
$%
%&
%1
%2
%
%!
%5
WHERES-NOMBRE = @VALOR
END
END
ELSE
BEIN
PRINT 'HOSPITAL'
SELECTH-NOMBRE ASHOSPITAL
,AV(P-SALARIO) ASMEDIA
,COUNT(P-EMPLEADO_NO) ASN/ EMPLEADOS
,SUM(P-SALARIO) ASSUMA FROMPLANTILLA ASP
INNER.OINHOSPITAL ASH
ONH-HOSPITAL_COD = P-HOSPITAL_COD
ROUPB+H-NOMBRE
HAVINH-NOMBRE = @VALOR
SELECTH-NOMBRE ASHOSPITAL
,P-EMPLEADO_NO ASN/ EMPLEADO
,P-APELLIDO, P-SALARIO
FROMPLANTILLA ASP
INNER.OINHOSPITAL ASH
ONH-HOSPITAL_COD = P-HOSPITAL_COD
WHEREH-NOMBRE = @VALOR
END
7/23/2019 Problemas resueltos sobre Procedimientos almacenados
12/21
?
1 EXECEMPPLANTILLA 'ENERAL'
) Crear un procedimiento en el que pasaremos como par"metro el pellido de un
empleado. l procedimiento de$ol$er" los subordinados del empleado escrito, si el
empleado no e5iste en la base de datos, informaremos de ello, si el empleado no tiene
subordinados, lo informa remos con un mensa!e y mostraremos su !efe. 6ostrar el
nmero de empleado, pellido, 7ficio y 8epartamento de los subordinados.
?
1
2
!
5
"
#
$
%
1&
CREATEPROCEDURE.EFES
@APE NVARCHAR(0)
AS
DECLARE@EMP INT, @.EFE INT, @SUB INT
SELECT@EMP = EMP_NO FROMEMP
WHEREAPELLIDO = @APE
IF (@EMP ISNULL)
BEIN
PRINT 'NO EXISTE NINUN EMPLEADO CON ESTE APELLIDO3 '2 @APE
END
ELSE
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
13/21
11
12
1
1!
15
1"
1#
1$
1%
2&
21
22
2
2!
25
2"
2#
2$
2%
&
1
2
!
5
"
#
$
BEIN
[email protected] = A-EMP_NO
,@SUB = B-EMP_NO
FROMEMP ASA INNER.OINEMP ASB
ONA-EMP_NO = B-DIR
WHEREB-DIR = @EMP
ORDERB+B-DIR
IF (@.EFE ISNULL)
BEIN
SELECTA-EMP_NO ASN/ DE EMPLEADO
,A-APELLIDO AS.EFE, A-OFICIO
,A-DEPT_NO ASN/ DEPARTAMENTO
,B-EMP_NO ASN/ EMPLEADO
,B-APELLIDO ASSUBORDINADO
,B-OFICIO
,B-DEPT_NO ASN/ DEPARTAMENTO
FROMEMP ASA
INNER.OINEMP ASB
ONB-DIR = A-EMP_NO
WHEREB-EMP_NO = @EMP
ORDERB+B-DIR
END
ELSE
BEIN
SELECTA-EMP_NO ASN/ DE EMPLEADO
,A-APELLIDO AS.EFE, A-OFICIO
,A-DEPT_NO ASN/ DEPARTAMENTO
,B-EMP_NO ASN/ EMPLEADO
,B-APELLIDO ASSUBORDINADO
,B-OFICIO
7/23/2019 Problemas resueltos sobre Procedimientos almacenados
14/21
%
!&
!1
!2
!
!!
!5
!"
!#
!$
,B-DEPT_NO ASN/ DEPARTAMENTO
FROMEMP ASA INNER.OINEMP ASB
ONA-EMP_NO = B-DIR
WHEREB-DIR = @EMP
ORDERB+B-DIR
END
END
?
1 EXEC.EFES 'ARCIA'
) Crear procedimiento que borre un empleado que coincida con los par"metros
indicados 9los par"metros ser"n todos los campos de la tabla empleado).
?
1
2
!
CREATEPROCEDUREBORRA_EMPLEADO
@EMP_NO INT,
@APELLIDO NVARCHAR(%0),
@OFICIO NVARCHAR(%0),
@DIR INT,
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
15/21
5
"
#
$
%
1&
11
12
1
1!
15
1"
1#
1$
@FECHA_ALT SMALLDATETIME,
@SALARIO INT,
@COMISION INT,
@DEPT_NO INT
AS
DELETEFROMEMP WHEREEMP_NO = @EMP_NO
ANDAPELLIDO = @APELLIDO
ANDOFICIO = @OFICIO
ANDDIR = @DIR
ANDFECHA_ALT = @FECHA_ALT
ANDSALARIO = @SALARIO
ANDCOMISION = @COMISION
ANDDEPT_NO = @DEPT_NO
?
1 EXECBORRA_EMPLEADO &$!#,'SUARE','EMPLEADO',0,'%"0#%01#',1"000,0,%0
2) 6odificaci%n del e!ercicio anterior, si no se introducen datos correctamente,
informar de ello con un mensa!e y no reali1ar la ba!a. Si el empleado introducido no
e5iste en la base de datos, deberemos informarlo con un mensa!e que de$uel$a elnombre y nmero de empleado del empleado introducido. Si el empleado e5iste, pero
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
16/21
los datos para eliminarlo son incorrectos, informaremos mostrando los datos reales del
empleado !unto con los datos introducidos por el usuario, para que se $ea el fallo.
?
1
2
!
5
"
#
$
%
1&
11
12
1
1!
15
1"
1#
1$
1%
2&
21
22
2
2!
CREATEPROCEDUREBORRAEMPLEADO
@EMP_NO INT
,@APELLIDO NVARCHAR(%0)
,@OFICIO NVARCHAR(%0)
,@DIR INT
,@FECHA_ALT SMALLDATETIME
,@SALARIO INT
,@COMISION INT
,@DEPT_NO INT
AS
DECLARE@VALOR NVARCHAR(0)
SELECT@VALOR = EMP_NO
FROMEMP WHEREEMP_NO = @EMP_NO
ANDAPELLIDO = @APELLIDO
ANDOFICIO = @OFICIO
ANDDIR = @DIR
ANDFECHA_ALT = @FECHA_ALT
ANDSALARIO = @SALARIO
ANDCOMISION = @COMISION
ANDDEPT_NO = @DEPT_NO
IF (@VALOR ISNULL)
BEIN
SELECT@VALOR = EMP_NO FROMEMP WHEREEMP_NO = @EMP_NO
IF (@VALOR ISNULL)
BEIN
PRINT 'EMPLEADO NO EXISTENTE EN LA BASE DE DATOS, VERIFI5UE LOS
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
17/21
25
2"
2#
2$
2%
&
1
2
!
5
"
#
$
%
!&
!1
!2
!
!!
!5
!"
!#
!$
!%
5&
51
52
DATOS DEL SR '2 @APELLIDO
END
ELSE
BEIN
PRINT 'DATOS INTRODUCIDOS ERRONEAMENTE3 '
PRINT CAST(@EMP_NO ASNVARCHAR(6)) 2 ' '2 @APELLIDO 2 ' '
2 @OFICIO 2 ' '2 CAST(@DIR ASNVARCHAR(6)) 2 ' '
2 CAST(@FECHA_ALT ASNVARCHAR(1%)) 2 ' '
2 CAST(@SALARIO ASNVARCHAR(10)) 2 ' '
2 CAST(@COMISION ASNVARCHAR(10)) 2 ' '
2 CAST(@DEPT_NO ASNVARCHAR(6))
SELECT@EMP_NO = EMP_NO, @APELLIDO = APELLIDO
,@OFICIO = OFICIO, @DIR = DIR
,@FECHA_ALT = FECHA_ALT, @SALARIO = SALARIO
,@COMISION = COMISION, @DEPT_NO = DEPT_NO
FROMEMP WHEREEMP_NO = @VALOR
PRINT 'DATOS REALES DEL EMPLEADO3 '
PRINT CAST(@EMP_NO ASNVARCHAR(6)) 2 ' '2 @APELLIDO 2 ' '
2 @OFICIO 2 ' '2 CAST(@DIR ASNVARCHAR(6)) 2 ' '
2 CAST(@FECHA_ALT ASNVARCHAR(1%)) 2 ' '
2 CAST(@SALARIO ASNVARCHAR(10)) 2 ' '
2 CAST(@COMISION ASNVARCHAR(10)) 2 ' '
2 CAST(@DEPT_NO ASNVARCHAR(6))
END
END
ELSE
BEIN
DELETEFROMEMP WHEREEMP_NO = @EMP_NO
ANDAPELLIDO = @APELLIDO
ANDOFICIO = @OFICIO
7/23/2019 Problemas resueltos sobre Procedimientos almacenados
18/21
5
5!
55
5"
5#
5$
5%
"&
"1
"2
ANDDIR = @DIR
ANDFECHA_ALT = @FECHA_ALT
ANDSALARIO = @SALARIO
ANDCOMISION = @COMISION
ANDDEPT_NO = @DEPT_NO
END
?
1 EXECBORRAEMPLEADO &$!#,'SUARE','EMPLEADO',0,'%"0#%01#',1"000,0,%0
3) Crear un procedimiento para insertar un empleado de la plantilla del :ospital. ;ara
poder insertar el empleado reali1aremos restriccionesurno.
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
19/21
l salario no superar" las #. ptas.
97pcional) ;odremos insertar por el c%digo del hospital o sala y por su nombre.
?
1
2
!
5
"
#
$
%
1&
11
12
1
1!
15
1"
1#
1$
1%
2&
21
22
2
2!
CREATEPROCEDUREINSERTAR_PLANTILLA
@HOSPITAL NVARCHAR(0)
,@SALA NVARCHAR(0)
,@EMPLEADO INT
,@APELLIDO NVARCHAR(0)
,@FUNCION NVARCHAR(0)
,@TURNO NVARCHAR(%)
,@SALARIO INT
AS
DECLARE@HOSPITAL% INT
DECLARE@SALA% INT
DECLARE@EMPLEADO% INT
DECLARE@APELLIDO% NVARCHAR(0)
DECLARE@FUNCION% NVARCHAR(0)
DECLARE@TURNO% NVARCHAR(%)
SELECT@EMPLEADO% = EMPLEADO_NO FROMPLANTILLA
WHEREEMPLEADO_NO = @EMPLEADO
IF (@EMPLEADO% ISNULL)
BEIN
SELECT@SALA% = SALA_COD FROMSALA
WHERENOMBRE = @SALA
SELECT@HOSPITAL% = HOSPITAL_COD FROMHOSPITAL
WHERENOMBRE = @HOSPITAL
IF (@SALA% ISNULLOR@HOSPITAL% ISNULL)
BEIN
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html7/23/2019 Problemas resueltos sobre Procedimientos almacenados
20/21
25
2"
2#
2$
2%
&
1
2
!
5
"
#
$
%
!&
!1
!2
!
!!
!5
!"
!#
!$
!%
5&
51
52
PRINT 'LA SALA O EL HOSPITAL INTRODUCIDO NO EST7N EN LOS
DATOS3'
PRINT 'SALA3 '2 @SALA
PRINT 'HOSPITAL3 '2 @HOSPITAL
PRINT ''
PRINT 'NO SE HA REALIADO LA INSERCI4N'
END
ELSE
BEIN
SELECT@FUNCION% = FUNCION FROMPLANTILLA
WHEREFUNCION = @FUNCION
SELECT@TURNO% = T FROMPLANTILLA
WHERET = @TURNO
IF (@FUNCION% ISNULLOR@TURNO% ISNULL)
BEIN
PRINT 'LA FUNCI4N O EL TURNO INTRODUCIDOS NO SON
V7LIDOS'
PRINT 'FUNCION3 '2 @FUNCION
PRINT 'TURNO3 '2 @TURNO
PRINT ''
PRINT 'NO SE HA REALIADO LA INSERCI4N'
END
ELSE
BEIN
IF (@SALARIO 8 #00000)
BEIN
PRINT 'EL SALARIO M7XIMO PARA LOS TRABA.ADORES
DE LA PLANTILLA ES DE #00-000 PTAS'
PRINT 'NO SE HA REALIADO LA INSERCI4N'
7/23/2019 Problemas resueltos sobre Procedimientos almacenados
21/21
5
5!
55
5"
5#
5$
5%
"&
"1
"2
"
"!
"5
""
"#
"$
"%
#&
#1
#2
END
ELSE
BEIN
INSERTINTOPLANTILLA(H9:;?_C9,S>?>_C9,E;?>9_N9,A;??
VALUES(@HOSPITAL%, @SALA%, @EMPLEADO
, @APELLIDO, @FUNCION, @TURNO, @SALARIO)
PRINT 'INSERCI4N REALIADA CORRECTAMENTE'
END
END
END
END
ELSE
BEIN
PRINT 'EL NGMERO DE EMPLEADO INTRODUCIDO EST7 REPETIDO3 '2
CAST(@EMPLEADO ASNVARCHAR(6))
PRINT 'NO SE HA REALIADO LA INSERCI4N'
END
?
1 EXECINSERTAR_PLANTILLA 'L> P>','R;>J?9 S-','EK9'
http://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.htmlhttp://www.ingenieriasystems.com/2015/05/Ejercicios-de-procedimientos-almacenados-en-SQL-Server-2-de-2.html