Está en la página 1de 7

Procedimientos almacenados con parametros en SQL

Server

Regresar al índice

Sintaxis:

Create Procedure Procedimiento @NombreParametro Tipo de dato As


Instrucciones

Posteriormente lo ejecutamos introduciendo un valor/res correspondiente al


parámetro/os introducido.

Exec Procedimiento Valor

Ejemplo 1

?
1 CREATE PROCEDURE NUMEMPDEPT @NDEP SMALLINT
2 AS SELECT COUNT(*) AS [NUM EMPLEADOS], DEPT_NO
3 FROM EMP
4 WHERE DEPT_NO = @NDEP
GROUP BY DEPT_NO
5

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.

?
1 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

?
1
CREATE PROCEDURE BUSCAEMP(
2 @NDEP SMALLINT,
3 @NOFICIO NVARCHAR(19))
4 AS
5 SELECT * FROM EMP
WHERE DEPT_NO = @NDEP
6 AND OFICIO = @NOFICIO
7

?
1 EXEC BUSCAEMP 20,'Empleado'

PROCEDIMIENTOS ALMACENADOS CON PARÁMETROS CON VALORES


POR DEFECTO

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.

?
1 CREATE PROCEDURE NUMEMP @NDEPT SMALLINT = 10
2 AS
3 SELECT DEPT_NO, COUNT(*) AS [NUM EMPLEADOS]
4 FROM EMP
5 WHERE DEPT_NO = @NDEPT
GROUP BY DEPT_NO
6

?
1 EXEC NUMEMP

Ejemplo 2

Debe devolver salario, oficio y comisión y le pasamos el apellido.

?
1 CREATE PROCEDURE SALARIOOFICIO @PAPELLIDO VARCHAR(20) = 'REY' AS
2 SELECT OFICIO, SALARIO, COMISION FROM EMP WHERE APELLIDO = @PAPELLIDO

?
1 EXEC SALARIOOFICIO 'GARCIA'

Sacaría el salario, el oficio y la comisión de todos los que tengan apellido Garcia,
sino pusiésemos parámetro, por defecto sacaría los que tuviesen apellido Rey.
Ejemplo 3

?
1 CREATE PROCEDURE SALARIOOFICIOLIKE(
2 @PAPELLIDO VARCHAR(20) = 'REY' )
3 AS
4 SELECT OFICIO, SALARIO, COMISION
5 FROM EMP
WHERE APELLIDO LIKE '%' + @PAPELLIDO + '%'
6

?
1 EXEC SALARIOOFICIOLIKE 's'

Sacaría oficio, salario y comisión de los empleados que tuviesen una s en su


apellido.

Ejemplo 4

Introducir oficio y salario debe sacar el apellido de los empleados que tengan el
mismo apellido y ganen mas del salario indicado. Debemos hacer que sino
introduce nada saque todos los registros.

?
1 CREATE PROCEDURE DOSPARAMETROS2(
2 @OFICIO VARCHAR(12) = '%',
3 @SALARIO VARCHAR(10) = '0' )
4 AS
SELECT APELLIDO FROM EMP WHERE OFICIO LIKE @OFICIO AND SALARIO > @SALARIO
5

?
1 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.

?
1
CREATE PROCEDURE TRESPARAMETROS(
2 @FINICIAL DATETIME = '01-01-1980',
3 @FFINAL SMALLDATETIME = '12-07-2002' ,
4 @DEPT_NO NVARCHAR(10) = '%'
5 )
6 AS
SELECT * FROM EMP WHERE FECHA_ALT BETWEEN @FINICIAL AND @FFINAL
7 AND CAST(DEPT_NO AS VARCHAR(10)) LIKE @DEPT_NO
8

?
1 EXEC TRESPARAMETROS '01-01-1980','12-07-2002','30'

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)

?
1
2
CREATE PROCEDURE [INSERTA EMPLEADO](
3 @EMP_NO INT,
4 @APELLIDO NVARCHAR(20),
5 @OFICIO NVARCHAR(20),
6 @DIR INT,
7 @FECHA_ALT SMALLDATETIME,
@SALARIO INT,
8 @COMISION INT,
9 @DEPT_NO INT)
10 AS
11 INSERT INTO EMP VALUES
(@EMP_NO,
12 @APELLIDO,
13 @OFICIO,
14 @DIR,
15 @FECHA_ALT,
16 @SALARIO,
@COMISION,
17 @DEPT_NO)
18
19

?
1 EXEC [INSERTA EMPLEADO] 7855,'ALIAGA','EMPLEADO',7782,'23/05/2015',45000,0,30

?
CREATE PROCEDURE [BORRA EMPLEADO](
1 @EMP_NO INT,
2 @APELLIDO NVARCHAR(20),
3 @OFICIO NVARCHAR(20),
4 @DIR INT,
5 @FECHA_ALT SMALLDATETIME,
@SALARIO INT,
6 @COMISION INT,
7 @DEPT_NO INT
8 )
9 AS
DELETE FROM EMP WHERE EMP_NO = @EMP_NO
10
AND APELLIDO = @APELLIDO
11 AND OFICIO = @OFICIO
12 AND DIR = @DIR
13 AND FECHA_ALT = @FECHA_ALT
AND SALARIO = @SALARIO
14 AND COMISION = @COMISION
15 AND DEPT_NO = @DEPT_NO
16
17
18
19

?
1 EXEC [BORRA EMPLEADO] 7855,'ALIAGA','EMPLEADO',7782,'23/05/2015',45000,0,30

También podría gustarte