Beruflich Dokumente
Kultur Dokumente
Ejemplo 1
CREATE PROCEDURE NUMEMPDEPT @NDEP SMALLINT
AS SELECT COUNT (*) AS [NUM EMPLEADOS], DEPT_NO
FROM EMP
WHERE DEPT_NO = @NDEP
GROUP BY DEPT_NO
Crea el procedimiento numempdept con el parámetro ndep que es tipo smallint (equivalente al
short en visual).
El procedimiento hace una select que realiza grupos por número de deparamento y cuenta
cuantos empleados hay en cada departamento.
EXEC NUMEMPDEPT 20
Ejecuta el procedimiento introduciendo el valor 20 para el parámetro ndep, con lo que
haría la select sobre el departamento 20.
Ejemplo 2
CREATE PROCEDURE BUSCAEMP (
@NDEP SMALLINT,
@NOFICIO NVARCHAR (19))
AS
SELECT * FROM EMP
WHERE DEPT_NO = @NDEP
AND OFICIO = @NOFICIO
Sintaxis:
Create Procedure Nombre @Variable tipo = Valor
As
Instrucciones
Donde Valor es el valor que le damos por defecto, este valor puede almacenar comodines (como
% que equivale a *).
Ejemplo 1
Crea un procedimiento con el parámetro ndept y le da por defecto valor 10.
CREATE PROCEDURE NUMEMP @NDEPT SMALLINT = 10
AS
SELECT DEPT_NO, COUNT (*) AS [NUM EMPLEADOS]
FROM EMP
WHERE DEPT_NO = @NDEPT
GROUP BY DEPT_NO
EXEC NUMEMP
Ejemplo 3
Sacaría oficio, salario y comisión de los empleados que tuviesen una s en su apellido.
Introducir oficio y salario debe sacar el apellido de los empleados que tengan el mismo apellido
y ganen más del salario indicado. Debemos hacer que sino introduce nada saque todos los
registros.
CREATE PROCEDURE DOSPARAMETROS2 (
@OFICIO VARCHAR (12) = '%',
@SALARIO VARCHAR (10) = ‘0’)
AS
SELECT APELLIDO FROM EMP WHERE OFICIO LIKE @OFICIO AND SALARIO > @SALARIO
EXEC DOSPARAMETROS2 'Empleado',1000
Ejemplo 5
Sacar todos los empleados que se dieron de alta entre una determinada fecha inicial y fecha final
y que pertenecen a un determinado departamento.
Ejemplo 6
Crear procedimiento que inserte un empleado. Crear otro procedimiento que borre un empleado
que coincida con los parámetros indicados (los parámetros serán todos los campos de la tabla
empleado)
CREATE PROCEDURE [INSERTA EMPLEADO] (
@EMP_NO INT,
@APELLIDO NVARCHAR (20),
@OFICIO NVARCHAR (20),
@DIR INT,
@FECHA_ALT SMALLDATETIME,
@SALARIO INT,
@COMISION INT,
@DEPT_NO INT)
AS
INSERT INTO EMP VALUES
(@EMP_NO,
@APELLIDO,
@OFICIO,
@DIR,
@FECHA_ALT,
@SALARIO,
@COMISION,
@DEPT_NO)
Sintaxis de declaración
Declare @nombre tipo_dato
Sintaxis de asignación directa
Set @nombre = valor
Sintaxis de asignación mediante consulta
Select @nombre = campo from tabla
Ejemplo 1:
Ejemplo 2:
CREATE PROCEDURE TOTALES
@NDEPT INT = NULL, @TOTAL INT OUTPUT
AS
IF @NDEPT IS NULL
SELECT @TOTAL = SUM (SALARIO) FROM EMP
ELSE
SELECT @TOTAL = SUM (SALARIO) FROM EMP WHERE DEPT_NO = @NDEPT
SELECT @TOTAL
MÁS EJEMPLOS:
CREATE PROCEDURE DOSPARAMETROS (
@OFICIO VARCHAR (12) = '%',
@SALARIO INT = 0)
AS
IF @SALARIO = 0
PRINT 'NO HA INTRODUCIDO SALARIO'
ELSE
PRÁCTICA N° 9
Para poder realizar la práctica de procedimientos almacenados debes tener la base de datos
Hospital, la cual se adjunta. La presentación es en formato físico y en digital, fecha de entrega:
martes 12 de dic. 2017, en hora de clase.
1. Sacar todos los empleados que se dieron de alta entre una determinada fecha inicial y fecha
final y que pertenecen a un determinado departamento.
2. Crear procedimiento que inserte un empleado.
3. Crear un procedimiento que recupere el nombre, número y número de personas a partir del
número de departamento.
4. Crear un procedimiento igual que el anterior, pero que recupere también las personas que
trabajan en dicho departamento, pasándole como parámetro el nombre.
5. Crear procedimiento para devolver salario, oficio y comisión, pasándole el apellido.
6. Igual que el anterior, pero si no le pasamos ningún valor, mostrará los datos de todos los
empleados.
7. Crear un procedimiento para mostrar el salario, oficio, apellido y nombre del departamento
de todos los empleados que contengan en su apellido el valor que le pasemos como
parámetro.
8. Crear un procedimiento que recupere el número departamento, el nombre y número de
empleados, dándole como valor el nombre del departamento, si el nombre introducido no es
válido, mostraremos un mensaje informativo comunicándolo.
9. Crear un procedimiento para devolver un informe sobre los empleados de la plantilla de un
determinado hospital, sala, turno o función. El informe mostrará número de empleados,
media, suma y un informe personalizado de cada uno que muestre número de empleado,
apellido y salario.
10. Crear un procedimiento en el que pasaremos como parámetro el Apellido de un empleado.
El procedimiento devolverá los subordinados del empleado escrito, si el empleado no existe
en la base de datos, informaremos de ello, si el empleado no tiene subordinados, lo informa
remos con un mensaje y mostraremos su jefe. Mostrar el número de empleado, Apellido,
Oficio y Departamento de los subordinados.
11. Crear procedimiento que borre un empleado que coincida con los parámetros indicados (los
parámetros serán todos los campos de la tabla empleado).
12. Modificación del ejercicio anterior, si no se introducen datos correctamente, informar de ello
con un mensaje y no realizar la baja. Si el empleado introducido no existe en la base de
datos, deberemos informarlo con un mensaje que devuelva el nombre y número de
empleado del empleado introducido. Si el empleado existe, pero los datos para eliminarlo