SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
I
Instituto de Educación Superior
Tecnológico Público Argentina
Dirección Regional de
Educación de Lima
Metropolitana
Ministerio de
Educación
PERÚ
Mg. Alex Tito Belleza Porras
Transact SQL – Parte 1
Carrera profesional
Computación
I
¿Qué es Transact SQL?
Programación en SQL SERVER
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.
I
¿Transact SQL?
Programación en SQL SERVER
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.
I
¿Qué es una variable?
Programación en SQL SERVER
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
2 tipos de variables
Locales
Definidas por el
usuario
Globales
Suministra el sistema,
solo se invoca
Proporciana
I
¿Qué tener en cuenta de las variables ?
Programación en SQL SERVER
• 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.
I
Declarando de una variable
Programación en SQL SERVER
DECLARE @VARIABLE TIPO_DATOS.
Asignando valores a las variables
SET @VARIABLE = VALOR O SENTENCIA
SELECT @VARIABLE = VALOR O SENTENCIA
I
Declarar la variable edad de tipo entero, asignarle un valor y
mostrarlo mediante la sentencia SELECT
declare @edad int
set @edad = 18
select @edad
Otra Forma:
declare @edad int=18
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
Ejemplo 01:
I
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.
declare @edad int = 18
select 'El numero es: '+CAST(@edad as varchar(10))
Ejemplo 01:
CAST(VARIABLE O VALOR AS TIPO_DATOS)
CONVERT(TIPO_DATOS, VARIABLE O VALOR)
I
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
I
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
I
Programación en SQL SERVER 2014
I
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.
I
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.
I
¿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
I
Sintaxis para crear un procedimiento
Almacenado
PRIMERA FORMA:
CREATE PROCEDURE NOMBRE
AS
SENTENCIAS
GO
TERCERA FORMA:
IF OBJECT_ID('SP_LISTA') IS NOT NULL
DROP PROCEDURE NOMBRE
GO
CREATE PROCEDURE NOMBRE
AS
SENTENCIA
GO
SEGUNDA FORMA:
CREATE PROCEDURE NOMBRE
AS
BEGIN
SENTENCIAS
END
GO
I
Sintaxis para ejecutar un
procedimiento Almacenado
Si necesitamos visualizar el bloque de sentencias que compone
el procedimiento almacenado puede usar la siguiente sentencia:
EXEC SP_HELPTEXT 'NOMBRE DEL PROCEDIMIENTO‘
¿Cómo se ejecuta un P.A.?
EXECUTE Nombre del procedimiento
NOTA: Se puede colocar las cuatro primeras letras:
EXEC Nombre del procedimiento
I
Ejemplo 01:
Crear un procedimiento almacenado que permita listar todos los registros de la
tabla clientes. Utilizar Base de Datos VENTAS2017
I
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
I
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
I
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
I
¿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
I
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
@PARAMETRO1 TIPO,
@PARAMETRO2 TIPO
AS
SENTENCIAS
GO
EXEC NOMBRE 'VALOR1' , 'VALOR2'
Formato de ejecución del p.a.:
I
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.
¿Cómo usar parámetros?
EXECUTE sp_listarClienteCod ‘CLI003'
GO
Ejecutando el procedimiento
almacenado con parámetro.
I
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
I
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”
I
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
I
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’
I
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
I
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
I
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.
I
INSERT
Crear un procedimiento
almacenado que permita
registrar datos a la tabla
CLIENTE.
Asignar de nombre
sp_registrar_cliente.
Además, debe validar la
existencia del
procedimiento
almacenado.
IF OBJECT_ID ('SP_REGISTRAR_CLIENTE' )
IS NOT NULL
BEGIN
DROP PROCEDURE SP_REGISTRAR_CLIENTE
END
GO
CREATE PROCEDURE SP_REGISTRAR_CLIENTE
@IDCLI CHAR (6),
@NOMBRES VARCHAR (25),
@APELL VARCHAR (25),
@DIRECC VARCHAR (60),
@TELEF CHAR (9),
@MAIL VARCHAR (35),
@IDDIST CHAR(4)
AS
BEGIN
INSERT INTO CLIENTE VALUES (@IDCLI,
@NOMBRES, @APELL, @DIRECC,
@TELEF, @MAIL, @IDDIST)
END
GO
I
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' , 'priverag@hotmail.com' ,'D002'
GO
SELECT * FROM CLIENTE WHERE
ID_CLIENTE='CLI012'
GO
Ahora vamos a mostrar el dato insertado mediante un
procedimiento almacenado a la tabla CLIENTE:
I
UPDATE
Crear un procedimiento
almacenado que permita
actualizar todos los datos de
la tabla CLIENTES.
Asignar de nombre
sp_actualizar_cliente.
Además, debe validar la
existencia del procedimiento
almacenado. La actualización
se realizará mediante su
código.
IF OBJECT_ID ('SP_ACTUALIZAR_CLIENTE' )
IS NOT NULL
BEGIN
DROP PROCEDURE SP_ACTUALIZAR_CLIENTE
END
GO
CREATE PROCEDURE SP_ACTUALIZAR_CLIENTE
@IDCLI CHAR (6),
@NOMBRES VARCHAR (25),
@APELL VARCHAR (25),
@DIRECC VARCHAR (60),
@TELEF CHAR (9),
@MAIL VARCHAR (35),
@IDDIST CHAR (4)
AS
BEGIN
UPDATE CLIENTE SET NOMBRES=@NOMBRES,
APELLIDOS=@APELL, DIRECCION=@DIRECC,
FONO=@TELEF, EMAIL=@MAIL,
ID_DISTRITO=@IDDIST
WHERE ID_CLIENTE=@IDCLI
END
GO
I
Ejecutando el procedimiento almacenado
Vamos a comprobar modificando su dirección y teléfono del CLIENTE
CLI012 . Los demás datos se mantienen igual.:
SELECT * FROM CLIENTE WHERE ID_CLIENTE='CLI012'
GO
Ahora vamos a mostrar el dato modificado mediante un procedimiento
almacenado a la tabla CLIENTE:
EXECUTE SP_ACTUALIZAR_CLIENTE 'CLI012' , 'PEDRO MANUEL' ,
'RIVERA GUTIERREZ', 'JR. BERNARDO ALCEDO 240' , '999887765' ,
'priverag@hotmail.com','D002'
GO
I
DELETE
Crear un procedimiento
almacenado que permita
eliminar los datos de un
cliente de la tabla CLIENTES.
Asignar de nombre
sp_eliminar_cliente.
Además, debe validar la
existencia del procedimiento
almacenado.
IF OBJECT_ID ('SP_ELIMINAR_CLIENTE' )
IS NOT NULL
BEGIN
DROP PROCEDURE SP_ELIMINAR_CLIENTE
END
GO
CREATE PROCEDURE SP_ELIMINAR_CLIENTE
@IDCLI CHAR (6)
AS
BEGIN
DELETE FROM CLIENTE WHERE
ID_CLIENTE=@IDCLI
END
GO
I
Ejecutando el procedimiento almacenado
Vamos a comprobar eliminando el CLIENTE CLI012.
SELECT * FROM CLIENTE
Ahora vamos a mostrar todos los registros de la tabla CLIENTE:
EXECUTE SP_ELIMINAR_CLIENTE 'CLI012'
GO

Más contenido relacionado

Similar a Transact SQL - Introducción a la programación en SQL Server

Similar a Transact SQL - Introducción a la programación en SQL Server (20)

Statement
StatementStatement
Statement
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
statement
statementstatement
statement
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
 
Qué es SQL
Qué es SQL Qué es SQL
Qué es SQL
 
Tema 10
Tema 10Tema 10
Tema 10
 
10 Guía_Fundamentos de Base de Datos.docx
10 Guía_Fundamentos de Base de Datos.docx10 Guía_Fundamentos de Base de Datos.docx
10 Guía_Fundamentos de Base de Datos.docx
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Mod2ud2 1
Mod2ud2 1Mod2ud2 1
Mod2ud2 1
 
PL/SQL
PL/SQLPL/SQL
PL/SQL
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Capa_datos_Con_procedimientos_almacenados
Capa_datos_Con_procedimientos_almacenadosCapa_datos_Con_procedimientos_almacenados
Capa_datos_Con_procedimientos_almacenados
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Estructuras repetitivas-dayana-y-ana
Estructuras repetitivas-dayana-y-anaEstructuras repetitivas-dayana-y-ana
Estructuras repetitivas-dayana-y-ana
 
PreparedStatement
PreparedStatementPreparedStatement
PreparedStatement
 
Informe escrito sobre PSeInt
Informe escrito sobre PSeIntInforme escrito sobre PSeInt
Informe escrito sobre PSeInt
 
Estructuras básicas 3 er periodo.docx
Estructuras básicas 3 er periodo.docxEstructuras básicas 3 er periodo.docx
Estructuras básicas 3 er periodo.docx
 
Estructuras básicas 3 er periodo.docx (1)
Estructuras básicas 3 er periodo.docx (1)Estructuras básicas 3 er periodo.docx (1)
Estructuras básicas 3 er periodo.docx (1)
 
Capa negocio con clases en VB
Capa negocio con clases en VBCapa negocio con clases en VB
Capa negocio con clases en VB
 

Último

institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMCOMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMcespitiacardales
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 

Último (10)

institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COMCOMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
COMOGANARAMIGODPARACRISTOIGLESIAADVENTISTANECOCLI,COM
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 

Transact SQL - Introducción a la programación en SQL Server

  • 1. I Instituto de Educación Superior Tecnológico Público Argentina Dirección Regional de Educación de Lima Metropolitana Ministerio de Educación PERÚ Mg. Alex Tito Belleza Porras Transact SQL – Parte 1 Carrera profesional Computación
  • 2. I ¿Qué es Transact SQL? Programación en SQL SERVER 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.
  • 3. I ¿Transact SQL? Programación en SQL SERVER 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.
  • 4. I ¿Qué es una variable? Programación en SQL SERVER 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 2 tipos de variables Locales Definidas por el usuario Globales Suministra el sistema, solo se invoca Proporciana
  • 5. I ¿Qué tener en cuenta de las variables ? Programación en SQL SERVER • 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.
  • 6. I Declarando de una variable Programación en SQL SERVER DECLARE @VARIABLE TIPO_DATOS. Asignando valores a las variables SET @VARIABLE = VALOR O SENTENCIA SELECT @VARIABLE = VALOR O SENTENCIA
  • 7. I Declarar la variable edad de tipo entero, asignarle un valor y mostrarlo mediante la sentencia SELECT declare @edad int set @edad = 18 select @edad Otra Forma: declare @edad int=18 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 Ejemplo 01:
  • 8. I 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. declare @edad int = 18 select 'El numero es: '+CAST(@edad as varchar(10)) Ejemplo 01: CAST(VARIABLE O VALOR AS TIPO_DATOS) CONVERT(TIPO_DATOS, VARIABLE O VALOR)
  • 9. I 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
  • 10. I 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
  • 11. I Programación en SQL SERVER 2014
  • 12. I 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.
  • 13. I 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.
  • 14. I ¿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
  • 15. I Sintaxis para crear un procedimiento Almacenado PRIMERA FORMA: CREATE PROCEDURE NOMBRE AS SENTENCIAS GO TERCERA FORMA: IF OBJECT_ID('SP_LISTA') IS NOT NULL DROP PROCEDURE NOMBRE GO CREATE PROCEDURE NOMBRE AS SENTENCIA GO SEGUNDA FORMA: CREATE PROCEDURE NOMBRE AS BEGIN SENTENCIAS END GO
  • 16. I Sintaxis para ejecutar un procedimiento Almacenado Si necesitamos visualizar el bloque de sentencias que compone el procedimiento almacenado puede usar la siguiente sentencia: EXEC SP_HELPTEXT 'NOMBRE DEL PROCEDIMIENTO‘ ¿Cómo se ejecuta un P.A.? EXECUTE Nombre del procedimiento NOTA: Se puede colocar las cuatro primeras letras: EXEC Nombre del procedimiento
  • 17. I Ejemplo 01: Crear un procedimiento almacenado que permita listar todos los registros de la tabla clientes. Utilizar Base de Datos VENTAS2017
  • 18. I 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
  • 19. I 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
  • 20. I 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
  • 21. I ¿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
  • 22. I 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 @PARAMETRO1 TIPO, @PARAMETRO2 TIPO AS SENTENCIAS GO EXEC NOMBRE 'VALOR1' , 'VALOR2' Formato de ejecución del p.a.:
  • 23. I 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. ¿Cómo usar parámetros? EXECUTE sp_listarClienteCod ‘CLI003' GO Ejecutando el procedimiento almacenado con parámetro.
  • 24. I 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
  • 25. I 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”
  • 26. I 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
  • 27. I 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’
  • 28. I 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
  • 29. I 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
  • 30. I 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.
  • 31. I INSERT Crear un procedimiento almacenado que permita registrar datos a la tabla CLIENTE. Asignar de nombre sp_registrar_cliente. Además, debe validar la existencia del procedimiento almacenado. IF OBJECT_ID ('SP_REGISTRAR_CLIENTE' ) IS NOT NULL BEGIN DROP PROCEDURE SP_REGISTRAR_CLIENTE END GO CREATE PROCEDURE SP_REGISTRAR_CLIENTE @IDCLI CHAR (6), @NOMBRES VARCHAR (25), @APELL VARCHAR (25), @DIRECC VARCHAR (60), @TELEF CHAR (9), @MAIL VARCHAR (35), @IDDIST CHAR(4) AS BEGIN INSERT INTO CLIENTE VALUES (@IDCLI, @NOMBRES, @APELL, @DIRECC, @TELEF, @MAIL, @IDDIST) END GO
  • 32. I 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' , 'priverag@hotmail.com' ,'D002' GO SELECT * FROM CLIENTE WHERE ID_CLIENTE='CLI012' GO Ahora vamos a mostrar el dato insertado mediante un procedimiento almacenado a la tabla CLIENTE:
  • 33. I UPDATE Crear un procedimiento almacenado que permita actualizar todos los datos de la tabla CLIENTES. Asignar de nombre sp_actualizar_cliente. Además, debe validar la existencia del procedimiento almacenado. La actualización se realizará mediante su código. IF OBJECT_ID ('SP_ACTUALIZAR_CLIENTE' ) IS NOT NULL BEGIN DROP PROCEDURE SP_ACTUALIZAR_CLIENTE END GO CREATE PROCEDURE SP_ACTUALIZAR_CLIENTE @IDCLI CHAR (6), @NOMBRES VARCHAR (25), @APELL VARCHAR (25), @DIRECC VARCHAR (60), @TELEF CHAR (9), @MAIL VARCHAR (35), @IDDIST CHAR (4) AS BEGIN UPDATE CLIENTE SET NOMBRES=@NOMBRES, APELLIDOS=@APELL, DIRECCION=@DIRECC, FONO=@TELEF, EMAIL=@MAIL, ID_DISTRITO=@IDDIST WHERE ID_CLIENTE=@IDCLI END GO
  • 34. I Ejecutando el procedimiento almacenado Vamos a comprobar modificando su dirección y teléfono del CLIENTE CLI012 . Los demás datos se mantienen igual.: SELECT * FROM CLIENTE WHERE ID_CLIENTE='CLI012' GO Ahora vamos a mostrar el dato modificado mediante un procedimiento almacenado a la tabla CLIENTE: EXECUTE SP_ACTUALIZAR_CLIENTE 'CLI012' , 'PEDRO MANUEL' , 'RIVERA GUTIERREZ', 'JR. BERNARDO ALCEDO 240' , '999887765' , 'priverag@hotmail.com','D002' GO
  • 35. I DELETE Crear un procedimiento almacenado que permita eliminar los datos de un cliente de la tabla CLIENTES. Asignar de nombre sp_eliminar_cliente. Además, debe validar la existencia del procedimiento almacenado. IF OBJECT_ID ('SP_ELIMINAR_CLIENTE' ) IS NOT NULL BEGIN DROP PROCEDURE SP_ELIMINAR_CLIENTE END GO CREATE PROCEDURE SP_ELIMINAR_CLIENTE @IDCLI CHAR (6) AS BEGIN DELETE FROM CLIENTE WHERE ID_CLIENTE=@IDCLI END GO
  • 36. I Ejecutando el procedimiento almacenado Vamos a comprobar eliminando el CLIENTE CLI012. SELECT * FROM CLIENTE Ahora vamos a mostrar todos los registros de la tabla CLIENTE: EXECUTE SP_ELIMINAR_CLIENTE 'CLI012' GO