Vous êtes sur la page 1sur 7

Programacin Distribuida y Concurrente

PROCEDIMIENTOS ALMACENADOS CON NORTHWIND Y


CONSULTAS

1.

Ejecute procedimientos almacenados del sistema que le permitan obtener


informacin de base de datos y tablas:

EXEC sp_helpdb Northwind


GO
EXEC sp_help customers
GO
Verifique otras tablas tambin y compare sus resultados. Escriba sus
coincidencias.
2.

Qu sucede si ejecuta los siguientes scripts: ?

SELECT USER_NAME()
GO
SELECT @@SERVERNAME
GO
EXEC sp_spaceused
GO
EXEC sp_helpfilegroup
GO
EXEC sp_helpfile
GO
3.

Crear una variable (DECLARE) y asignarle un valor (SET), luego mostramos datos:

--SE DECLARA LA VARIABLE @Nombre de tipo cadena


DECLARE @Nombre varchar(30)
--SE ASIGNA A LA VARIABLE @Nombre LA CADENA
'PEDRO'
SET @Nombre = 'Pedro'
--SE IMPRIME LA VARIABLE
PRINT @Nombre
--SE DECLARA LA VARIABLE @Sueldo DE TIPO DECIMAL
DECLARE @Sueldo decimal(7,2)
--SE ASIGNA A LA VARIABLE @Sueldo EL VALOR
50000.85
SET @Sueldo = 50000.85
--SE IMPRIME LA VARIABLE
PRINT @Sueldo

COMPUTACIN Y SOLUCIONES INFORMTICAS

Prof: Saravia Matias E.

Programacin Distribuida y Concurrente


4.

Ejemplo de Funciones, INDIQUE EL RESULTADO:

SELECT 'Dia numero' = DAY(GETDATE())


SELECT 'Mes numero' = MONTH(GETDATE())
SELECT 'Ao' = YEAR('31/07/2015')
GO
5.

USO DE CONTROL DE FLUJO: IF ELSE


Imprima una cadena correspondiente al nombre del da, segn el contenido de
una variable llamada @NumDia

DECLARE @NumDia int


--OBTENEMOS EL DIA DE LA SEMANA (1 LUNES, 2
MARTES,...
SET @NumDia = DATEPART(dw,getdate())
--AVERIGUAMOS SEGUN EL NUMERO OBTENIDO QUE DIA ES
IF (@NumDia=1)
PRINT 'LUNES'
IF (@NumDia=2)
PRINT 'MARTES'
IF (@NumDia=3)
PRINT 'MIERCOLES'
IF (@NumDia=4)
PRINT 'JUEVES'
IF (@NumDia=5)
PRINT 'VIERNES'
IF (@NumDia=6)
PRINT 'SABADO'
IF (@NumDia=7)
PRINT 'DOMINGO'
GO
6. Tambin podemos insertar BEGIN END
Defina un bloque de instrucciones que se procesar como un bloque. Puede usarlo
despus de un IF o un WHILE.

DECLARE @Var varchar(20)


IF USER_NAME() = 'dbo'
--Si es cierto se ejecuta BEGIN ... END

BEGIN
PRINT 'Personal'
SET @Var = 'Autorizado'
END
ELSE
--Si no es cierto se ejecuta este otro BEGIN ... END

BEGIN
COMPUTACIN Y SOLUCIONES INFORMTICAS

Prof: Saravia Matias E.

Programacin Distribuida y Concurrente

PRINT 'Personal'
PRINT 'No Autorizado'
END
--Se imprimira la variable

PRINT @Var
GO
7. USO DE WHILE: Imprima los nmeros enteros del 1 al 10, y luego calcule la
suma de dichos nmeros.

DECLARE @Num int


DECLARE @Suma int
SET @Num = 0
SET @Suma = 0
WHILE (@Num < 10)
BEGIN
SET @Num = @Num + 1
PRINT @Num
SET @Suma = @Suma + @Num
END
PRINT 'LA SUMA CORRESPONDIENTE ES:' + STR(@Suma)
GO
8.

USO DE CASE: Imprima una cadena de caracteres correspondiente al da de la


semana. En este caso se utiliza la estructura CASE.

DECLARE @NumDia int


--Obtenemos el dia de la semana (1 Lunes, 2
Martes...
SET @NumDia = DATEPART(dw,getdate())
SELECT CASE @NumDia
WHEN 1 THEN 'Lunes'
WHEN 2 THEN 'Martes'
WHEN 3 THEN 'Miercoles'
WHEN 4 THEN 'Jueves'
WHEN 5 THEN 'Viernes'
WHEN 6 THEN 'Sabado'
WHEN 7 THEN 'Domingo'
END AS 'Dia de semana'
GO

SUBCONSULTAS USO DE MARKETPERU


Una subconsulta es una declaracin SELECT anidada dentro de una sentencia SELECT,
INSERT, UPDATE O DELETE, tambin dentro de otra subconsulta.

COMPUTACIN Y SOLUCIONES INFORMTICAS

Prof: Saravia Matias E.

Programacin Distribuida y Concurrente


Las subconsultas son de los siguientes tipos:
a. Subconsulta que entrega 1 solo valor (1 fila, 1 columna)
b. Subconsulta que entrega un conjunto de valores (varias filas, 1 columna)
Las subconsultas se especifican entre parntesis.
EJERCICIO1:
Genere una consulta que entregue la lista de precios de todos los productos,
especificando en una columna adicional la diferencia entre el precio de cada producto
y el precio promedio de todos los productos.
SOLUCIN:
a. Primero obtenemos la consulta que muestre el promedio de todos los
productos.

SELECT AVG(precioProveedor)FROM Producto


GO

b. Mostraremos mediante una consulta, la lista de precios solicitada teniendo en


cuenta la frmula que determina la diferencia entre el precio de cada producto
y el precio promedio de todos los productos.

SELECT idProducto, nombre, precioProveedor,


Diferencia = precioProveedor (SELECT AVG(precioProveedor) FROM Producto)
FROM Producto
GO

COMPUTACIN Y SOLUCIONES INFORMTICAS

Prof: Saravia Matias E.

Programacin Distribuida y Concurrente


EJERCICIO2:
Escriba una consulta que determine el porcentaje de unidades despachadas de cada
producto de la categora 4 respecto al total despachado de la categora.
SOLUCIN:
a. Primero hacemos la consulta que calcula el total despachado para la cetgora 4.

SELECT SUM(cantidad)
FROM Guia_detalle INNER JOIN Producto
ON Guia_detalle.idProducto =
Producto.idProducto
WHERE Producto.idCategoria = 4
GO

b. Usaremos la consulta anterior dentro de la nueva consulta:

SELECT Producto.idProducto,Producto.nombre,
Despachado =
ISNULL(SUM(Guia_detalle.cantidad),0),
Porcentaje =
CONVERT(float,
ISNULL(SUM(Guia_detalle.cantidad),0))/
(SELECT SUM(cantidad)
FROM Guia_detalle INNER JOIN Producto
ON Guia_detalle.idProducto =
Producto.idProducto
WHERE Producto.idCategoria = 4)*100
FROM Producto LEFT OUTER JOIN Guia_detalle
ON Producto.idProducto = Guia_detalle.idProducto
WHERE Producto.idCategoria = 4
GROUP BY Producto.idProducto, Producto.nombre
GO

COMPUTACIN Y SOLUCIONES INFORMTICAS

Prof: Saravia Matias E.

Programacin Distribuida y Concurrente

EJERCICIO 3:
Escriba una consulta que entregue una lista de los productos que se despacharon en la
fecha que se despach la ltima salida del almacn. Tenga en cuenta que en dicha
fecha se puede haber registrado ms de una salida.
SOLUCIN:
a. Primero obtenemos la fecha de la ltima salida

SELECT MAX(fechaSalida) FROM Guia


GO

b. Insertaremos nuestra consulta en:

SELECT DISTINCT Guia_detalle.idproducto,


Producto.nombre
FROM Guia_detalle INNER JOIN Producto
ON Guia_detalle.idProducto = producto.idProducto
INNER JOIN Guia
ON Guia_detalle.idGuia = Guia.idGuia
WHERE CONVERT(char(10),Guia.fechaSalida,103) =
(SELECT CONVERT(char(10),MAX(fechaSalida),103)
FROM Guia)
GO

COMPUTACIN Y SOLUCIONES INFORMTICAS

Prof: Saravia Matias E.

Programacin Distribuida y Concurrente

EJERCICIO 4:
Escriba una consulta que entregue una lista de los productos que no registran salida
del almacn.
SOLUCION:

SELECT idProducto, nombre


FROM Producto
WHERE idproducto NOT IN
(SELECT idProducto FROM Guia_detalle)
ORDER BY idProducto
GO

COMPUTACIN Y SOLUCIONES INFORMTICAS

Prof: Saravia Matias E.

Vous aimerez peut-être aussi