0% encontró este documento útil (0 votos)
92 vistas44 páginas

Introducción A La Programación en Transact SQL (2349)

Este documento describe cómo crear y utilizar procedimientos almacenados en SQL Server 2014. Explica conceptos clave como declarar variables, tipos de variables, y cómo crear procedimientos almacenados con y sin parámetros. También cubre cómo modificar y eliminar procedimientos almacenados existentes.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
92 vistas44 páginas

Introducción A La Programación en Transact SQL (2349)

Este documento describe cómo crear y utilizar procedimientos almacenados en SQL Server 2014. Explica conceptos clave como declarar variables, tipos de variables, y cómo crear procedimientos almacenados con y sin parámetros. También cubre cómo modificar y eliminar procedimientos almacenados existentes.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 44

Carrera

Profesional
Técnica
BASE DE DATOS

UNIDAD 4

Docentes del Curso


Logro de la Unidad

Al término de la cuarta unidad, el estudiante recupera información


eficazmente de una tabla de la base de datos implementando
procedimientos almacenados sin y con parámetros de entrada

Temas a desarrollar

• Tema 9: Introducción a la programación en SQL


SERVER 2014
4.1.1. Declaración de variables locales
4.1.2. Procedimientos almacenados con una tabla.
4.1.3. Procedimientos almacenados con uno y dos parámetros de entrada.
4.1.4. Procedimientos almacenados de mantenimiento de datos (INSERT,
UPDATE y DELETE)

2
Programación en SQL SERVER 2014

3
Programación en SQL SERVER 2014

¿Qué es Transact SQL?


Transact SQL es el lenguaje de programación que
proporciona SQL para ampliar la forma de obtener la
información, por ejemplo se definen variables locales, se
estructuran sentencias de control de flujo como if y case y
el control de repeticiones con while.

4
Programación en SQL SERVER 2014
¿Transact SQL?
Transact SQL proporciona palabras clave especiales
llamadas lenguaje de control de flujo que permiten
controlar el flujo de ejecución de las instrucciones.

El lenguaje de control de flujo se puede utilizar en


instrucciones sencillas, lotes, procedimientos almacenados
y disparadores.

5
Programación en SQL SERVER 2014
¿Qué es una variable?
Una variable es un espacio de memoria a la que se asigna un
determinado valor. Este valor puede cambiar durante el lote o el
procedimiento almacenado donde se utiliza la variable:

SQL SERVER
Proporciana

2 tipos de variables

6
Programación en SQL SERVER 2014
¿Qué tener en cuenta de las variables ?

• Las variables locales se declaran, nombran y escriben


mediante la palabra clave DECLARE, y reciben un valor
inicial mediante una instrucción SELECT o SET.

• Los nombres de las variables locales deben empezar con el


símbolo “@”.

• A cada variable local se le debe asignar un tipo de dato


definido por el usuario.

7
Programación en SQL SERVER 2014

Declarando de una variable

DECLARE @VARIABLE TIPO_DATOS.

Asignando valores a las variables

SET @VARIABLE = VALOR O SENTENCIA

SELECT @VARIABLE = VALOR O SENTENCIA

8
Programación en SQL SERVER 2014

9
Ejemplo 01:

Declarar la variable edad de tipo entero, asignarle un valor y


mostrarlo mediante la sentencia SELECT

declare @edad int Otra Forma:


set @edad = 18 declare @edad int=18
select @edad select @edad

Nota: Se puede declarar y asignar en una misma línea; si necesita


realizar más declaraciones y asignaciones será cuestión de separarlos por
comas

declare @edad int = 10


print @edad

10
Ejemplo 01:

Si la impresión está acompañada de un texto representativo del valor se


debe tener en cuenta que los valores sean de tipo Char o Varchar, de otra
manera tendríamos que aplicar la sentencia CAST o CONVERT.

CAST(VARIABLE O VALOR AS TIPO_DATOS)


CONVERT(TIPO_DATOS, VARIABLE O VALOR)

declare @edad int = 18


select 'El numero es: '+CAST(@edad as varchar(10))

11
Ejemplo 02:

Script que permita calcular el promedio de un determinado alumno, el


cual cuenta con cuatro notas y estas son de tipo entero:

DECLARE @NOMBRE VARCHAR (30) ='JUAN PEREZ' , @N1 INT = 10,


@N2 INT = 16, @N3 INT = 15,
@N4 INT =20, @PROM DECIMAL (5, 2)
SET @PROM = (@N1 + @N2 + @N3 + @N4)/4.0
SELECT @NOMBRE AS ALUMNO, @PROM AS PROMEDIO

12
Ejemplo 03:

Declarar 3 variables las cuales serán: codcli, nombre y dirección,


asignarle a codcli el código de un cliente de la tabla cliente y a partir
del código asignado buscar su nombre y dirección. Mostrar su código,
nombre y dirección. Utilizar la Base de Datos VENTAS2017
DECLARE
@CODCLI CHAR(6)='CLI003',
@NOMBRE VARCHAR(30),
@DIRECCION VARCHAR (80)

--Obteniendo el nombre del cliente a partir del código


SELECT @NOMBRE=NOMBRES FROM CLIENTE WHERE ID_CLIENTE=@CODCLI
--Obteniendo la dirección del cliente a partir del código
SELECT @DIRECCION=DIRECCION FROM CLIENTE WHERE ID_CLIENTE= @CODCLI
--Mostrando las columnas solicitadas
SELECT @CODCLI AS CODIGO, @NOMBRE AS NOMBRE, @DIRECCION AS DIRECCION
GO

13
Programación en SQL SERVER 2014

PROCEDIMIENTOS
ALMACENADOS

14
PROCEDIMIENTO ALMACENADO
Los procedimientos almacenados son grupos formados por
instrucciones SQL y el lenguaje de control de flujo.
Cuando se ejecuta un procedimiento, se prepara un plan de
ejecución para que la subsiguiente ejecución sea muy rápida.

15
CARACTERÍSTICAS DE UN
PROCEDIMIENTO ALMACENADO
1. Se almacenan en la propia Base de Datos y constituyen un objeto más
dentro de ésta.

2. Tienden a mejorar el rendimiento de los sistemas producto a que reducen


en intercambio entre cliente y servidor.

3. Los procedimientos almacenados son reutilizables, de manera que


los usuarios mediante la aplicación cliente no necesitan relanzar los
comandos individuales, sino que pueden llamar el procedimiento para
ejecutarlo en el servidor tantas veces como sea necesario.

16
¿QUÉ PUEDEN INCLUIR LOS
PROCEDIMIENTOS ALMACENADOS?

• Incluir parámetros
• Llamar a otros procedimientos
• Devolver un valor de estado a un procedimiento de llamada o lote para indicar
el éxito o el fracaso del mismo y la razón de dicho fallo.
• Devolver valores de parámetros a un procedimiento de llamada o lote
• Ejecutarse en SQL Server remotos

17
Sintaxis para crear un
procedimiento Almacenado
PRIMERA FORMA: SEGUNDA FORMA:

CREATE PROCEDURE NOMBRE CREATE PROCEDURE NOMBRE


AS AS
SENTENCIAS BEGIN
GO SENTENCIAS
END
GO

TERCERA FORMA:

IF OBJECT_ID('SP_LISTA') IS NOT NULL


DROP PROCEDURE NOMBRE
GO
CREATE PROCEDURE NOMBRE
AS
SENTENCIA
GO

18
Sintaxis para ejecutar un
procedimiento Almacenado
¿Cómo se ejecuta un P.A.?

EXECUTE Nombre del procedimiento

NOTA: Se puede colocar las cuatro primeras letras:

EXEC Nombre del procedimiento

Si necesitamos visualizar el bloque de sentencias que compone


el procedimiento almacenado puede usar la siguiente sentencia:

EXEC SP_HELPTEXT 'NOMBRE DEL PROCEDIMIENTO‘

19
Programación en SQL SERVER 2014

20
Ejemplo 01:

Crear un procedimiento almacenado que permita listar todos los registros de la


tabla clientes. Utilizar Base de Datos VENTAS2017

21
Modificación de un procedimiento
almacenado
La modificación de un procedimiento almacenado permite realizar alguna
modificación dentro del bloque de sentencias que la compone. Pero tenga
en cuenta que si valida el procedimiento almacenado ya no será
necesario modificarlo, solo ejecutar la creación del procedimiento con su
respectiva sentencia de validación.

ALTER PROC Nombre


As
sentencias
Go

22
Ejemplo 02:

Modificar el procedimiento almacenado sp_listar_clientes de tal forma


que solo muestre el código del cliente, nombre del cliente y email del
cliente.

--Modificando el procedimiento almacenado


alter proc sp_listar_clientes
As
select c.id_cliente as codigo, c.nombres as nombre,
c.email as correo
from cliente c
Go

--Ejecutando el procedimiento

Execute sp_listar_clientes
Go

23
Eliminación de un procedimiento almacenado
La eliminación del procedimiento almacenado es considerada como la
inhabilitación y eliminación del objeto de tipo procedimiento almacenado.

DROP PROC Nombre

Ejemplo 03:

Eliminar el procedimiento almacenado sp_listar_clientes

DROP PROC sp_listar_clientes


GO

24
¿Como Visualizar todos los procedimientos
almacenados creados en una Base de Datos?

SELECT ROUTINE_NAME FROM


INFORMATION_SCHEMA. ROUTINES
WHERE ROUTINE_TYPE =
'PROCEDURE'
ORDER BY ROUTINE_NAME
GO

25
Procedimientos Almacenados
con Parámetros de Entrada
Los parámetros cumplen una función importante ya que por medio de
ellas enviaremos valores al procedimiento, es así que las sentencias
implementadas dentro del procedimiento usaran a dichos parámetros
como una variable local.
CREATE PROCEDURE NOMBRE (@PARAMETRO1 TIPO, @PARAMETRO2 TIPO)
AS
SENTENCIAS
GO

Otra forma de implementar el


Procedimiento almacenado es:
CREATE PROCEDURE NOMBRE Formato de ejecución del p.a.:
@PARAMETRO1 TIPO,
@PARAMETRO2 TIPO
EXEC NOMBRE 'VALOR1' , 'VALOR2'
AS
SENTENCIAS
GO

26
¿Cómo usar parámetros?
Ejemplo 04:
Crear un procedimiento almacenado de nombre sp_listarClientesCod el
cual permitirá recibir el código de un cliente y listará todos los datos del
cliente ingresado.

Ejecutando el procedimiento
almacenado con parámetro.

EXECUTE sp_listarClienteCod ‘CLI003'


GO

27
Estructura condicional IF…ELSE

La estructura condicional IF permite evaluar una expresión booleana


(resultado SI - NO), y ejecutar las operaciones contenidas en el bloque
formado por BEGIN ……….END

IF ( CONDICION )
BEGIN
Sentencias verdaderas
END
ELSE
BEGIN
Sentencias falsas
END

28
Ejemplo 05:
Crear un procedimiento almacenado que reciba como parámetro una categoría del
producto. El procedimiento verificara si la categoría existe. Si existe lo mostrará, si no
existe mostrará el mensaje “No existe la categoría ingresado”

29
Estructura condicional múltiple CASE
Evalúa una lista de condiciones y devuelve una de las varias expresiones de
resultado posibles. La expresión CASE tiene dos formatos:

- CASE simple, el cual compara una expresión con un conjunto de expresiones


sencillas para determinar el resultado.

- CASE buscada, evalúa un conjunto de expresiones booleanas para determinar el


resultado.
--SIMPLE
CASE COLUMNA
WHEN 'ALTERNATIVA1' THEN 'VALOR RESULTANTE 1'
WHEN 'ALTERNATIVA2' THEN 'VALOR RESULTANTE 2'
ELSE 'VALOR RESULTANTE POR DEFECTO'
END

--BUSCADA
CASE
WHEN CONDICION1 THEN 'VALOR RESULTANTE 1'
WHEN CONDICION2 THEN 'VALOR RESULTANTE 2'
ELSE 'VALOR RESULTANTE POR DEFECTO'
END

30
Ejemplo 06:

Crear un procedimiento almacenado que permite mostrar el estado de boleta


teniendo en cuenta los siguientes casos:

CASO ‘AC’, mostrar “ACTIVO”,


CASO ‘AN’, mostrar ‘ANULADO’
CASO ‘PE’, mostrar ‘PENDIENTE’

31
Estructura repetitiva WHILE

Establece una condición para la ejecución repetida de una instrucción o


bloque de instrucciones SQL. Las instrucciones se ejecutan
repetidamente siempre que la condición especificada sea verdadera. Se
puede controlar la ejecución de instrucciones en el bucle WHILE con las
palabras clave BREAK y CONTINUE

WHILE CONDICION
BEGIN
SENTENCIAS | BREAK | CONTINUE
END
GO

32
Ejemplo 07:

Imprimir los primeros 20 números naturales enteros, indicando si el


numero es par o impar

DECLARE @can int


SET @can = 0

WHILE (@can < 20)


BEGIN
SET @can = @can + 1
IF (@can % 2 = 0)
PRINT CAST(@can as varchar) +' NÚMERO PAR'
ELSE
PRINT CAST(@can as varchar) + ' NÚMERO IMPAR'
END
GO

33
Procedimientos almacenados de mantenimiento de
datos (INSERT, UPDATE y DELETE)

Usando la tabla CLIENTE que se encuentra dentro de la base de datos


VENTAS2017 empezaremos a implementar los procedimientos de
mantenimiento de inserción, actualización y eliminación.

34
INSERT IF OBJECT_ID ('SP_REGISTRAR_CLIENTE' )
IS NOT NULL
BEGIN
Crear un procedimiento DROP PROCEDURE SP_REGISTRAR_CLIENTE
almacenado que permita END
registrar datos a la tabla GO
CLIENTE. CREATE PROCEDURE SP_REGISTRAR_CLIENTE
@IDCLI CHAR (6),
Asignar de nombre @NOMBRES VARCHAR (25),
sp_registrar_cliente. @APELL VARCHAR (25),
@DIRECC VARCHAR (60),
Además, debe validar la @TELEF CHAR (9),
existencia del @MAIL VARCHAR (35),
procedimiento @IDDIST CHAR(4)
almacenado. AS
BEGIN
INSERT INTO CLIENTE VALUES (@IDCLI,
@NOMBRES, @APELL, @DIRECC,
@TELEF, @MAIL, @IDDIST)
END
GO

35
Ejecutando el procedimiento almacenado

Vamos a comprobar ingresando los datos respectivos


a cada parámetro de entrada:

EXECUTE SP_REGISTRAR_CLIENTE 'CLI012' , 'PEDRO


MANUEL' , 'RIVERA GUTIERREZ', 'AV. LOS AIRES #
2177' , '953817277' , '[email protected]' ,'D002'
GO

Ahora vamos a mostrar el dato insertado mediante un


procedimiento almacenado a la tabla CLIENTE:

SELECT * FROM CLIENTE WHERE


ID_CLIENTE='CLI012'
GO

36
IF OBJECT_ID ('SP_ACTUALIZAR_CLIENTE' )
UPDATE IS NOT NULL
BEGIN
DROP PROCEDURE SP_ACTUALIZAR_CLIENTE
Crear un procedimiento END
almacenado que permita GO
actualizar todos los datos de CREATE PROCEDURE SP_ACTUALIZAR_CLIENTE
la tabla CLIENTES. @IDCLI CHAR (6),
@NOMBRES VARCHAR (25),
Asignar de nombre @APELL VARCHAR (25),
sp_actualizar_cliente. @DIRECC VARCHAR (60),
@TELEF CHAR (9),
Además, debe validar la @MAIL VARCHAR (35),
existencia del procedimiento @IDDIST CHAR (4)
almacenado. La actualización AS
se realizará mediante su BEGIN
código. UPDATE CLIENTE SET NOMBRES=@NOMBRES,
APELLIDOS=@APELL, DIRECCION=@DIRECC,
FONO=@TELEF, EMAIL=@MAIL,
ID_DISTRITO=@IDDIST
WHERE ID_CLIENTE=@IDCLI
END
GO
37
Ejecutando el procedimiento almacenado

Vamos a comprobar modificando su dirección y teléfono del CLIENTE


CLI012 . Los demás datos se mantienen igual.:

EXECUTE SP_ACTUALIZAR_CLIENTE 'CLI012' , 'PEDRO MANUEL' ,


'RIVERA GUTIERREZ', 'JR. BERNARDO ALCEDO 240' , '999887765' ,
'[email protected]','D002'
GO

Ahora vamos a mostrar el dato modificado mediante un procedimiento


almacenado a la tabla CLIENTE:

SELECT * FROM CLIENTE WHERE ID_CLIENTE='CLI012'


GO

38
DELETE

Crear un procedimiento IF OBJECT_ID ('SP_ELIMINAR_CLIENTE' )


almacenado que permita IS NOT NULL
eliminar los datos de un BEGIN
cliente de la tabla CLIENTES. DROP PROCEDURE SP_ELIMINAR_CLIENTE
END
Asignar de nombre GO
sp_eliminar_cliente. CREATE PROCEDURE SP_ELIMINAR_CLIENTE
@IDCLI CHAR (6)
Además, debe validar la AS
existencia del procedimiento BEGIN
almacenado. DELETE FROM CLIENTE WHERE
ID_CLIENTE=@IDCLI
END
GO

39
Ejecutando el procedimiento almacenado

Vamos a comprobar eliminando el CLIENTE CLI012.

EXECUTE SP_ELIMINAR_CLIENTE 'CLI012'


GO

Ahora vamos a mostrar todos los registros de la tabla CLIENTE:

SELECT * FROM CLIENTE

40
HAGA UNA PAUSA (REFLEXIÓN)

Para que reflexionen y


entiendan la importancia de
los temas tratados y el
mejoramiento de su propio
proceso de aprendizaje.

FIN DEL TEMA 9


41
CIERRE
Considere los puntos más confusos, planteando las siguientes interrogantes:
1. ¿Cuál fue el tema más confuso sobre el que hablamos hoy en el aula?
2. ¿Qué preguntas tiene aún sobre el tema de hoy?
3. ¿Qué ejemplos usamos que no tuvieron sentido?

Considere una minuta, planteando las siguientes interrogantes:


1. ¿Cuál fue el tema más importante sobre el que hablamos hoy en el aula?
2. ¿Cuáles fueron los ejemplos más útiles?
3. ¿Cuáles fueron las preguntas más útiles?
4. ¿Cuáles fueron los temas clave discutidos hoy en clase?

Autoaprendizaje, del estudiante

42
CIERRE

REFERENCIAS DE LOS TEMAS


• ENLACES
1. https://www.ecured.cu/Procedimientos_almacenados
2. https://es.wikipedia.org/wiki/Procedimiento_almacenado

• VIDEOS
1. https://www.youtube.com/watch?v=tpjmONtsXKI
2. https://www.youtube.com/watch?v=zZoTuz-qMco
3. https://www.youtube.com/watch?v=DrFdkcYE0tw
4. https://www.youtube.com/watch?v=4hRwJt8BACQ
• MANUAL DEL CURSO
Es obligatorio utilizar durante todo el proceso del curso.

43
SEDE MIRAFLORES SEDE INDEPENDENCIA SEDE BREÑA SEDE TRUJILLO
Calle Diez Canseco Cdra 2 / Pasaje Tello Av. Carlos Izaguirre 233 Av. Brasil 714 – 792 Calle Borgoño 361
Miraflores – Lima Independencia – Lima (CC La Rambla – Piso 3) Trujillo
Teléfono: 633-5555 Teléfono: 633-5555 Breña – Lima Teléfono: (044) 60-2000
Teléfono: 633-5555

SEDE SAN JUAN DE LURIGANCHO SEDE SAN MIGUEL SEDE BELLAVISTA SEDE AREQUIPA
Av. Próceres de la Independencia 3023-3043 Av. Federico Gallese 847 Av. Mariscal Oscar R. Benvides 3866 – 4070 Av. Porongoche 500
San Juan de Lurigancho – Lima San Miguel – Lima (CC Mall Aventura Plaza) (CC Mall Aventura Plaza)
Teléfono: 633-5555 Teléfono: 632-4900 Bellavista – Callao Paucarpata - Arequipa
Teléfono: 633-5555 Teléfono: (054) 60-3535

www.cibertec.edu.pe

También podría gustarte