jueves, 30 de abril de 2020
viernes, 24 de abril de 2020
jueves, 23 de abril de 2020
Lección 3 Actividad 2. Tema: Procedimientos Almacenados. Curso Fundacion Carlos Slim
Lección 3 Actividad 2
Videos del curso:
https://www.youtube.com/watch?v=AY6jUPN5vQ4&list=PLRVrNjqJtZljg-ainSqTpBHXuQL_ivcUR&index=3
https://www.youtube.com/watch?v=ilRToMrZD0I&list=PLRVrNjqJtZljg-ainSqTpBHXuQL_ivcUR&index=4
https://www.youtube.com/watch?v=hwasAV_H6hg&list=PLRVrNjqJtZljg-ainSqTpBHXuQL_ivcUR&index=5
https://www.youtube.com/watch?v=B0dC7usHxNA&list=PLRVrNjqJtZljg-ainSqTpBHXuQL_ivcUR&index=6
https://www.youtube.com/watch?v=P1zxiviBeEo&list=PLRVrNjqJtZljg-ainSqTpBHXuQL_ivcUR&index=7
https://www.youtube.com/watch?v=z9YohM3ChIM&list=PLRVrNjqJtZljg-ainSqTpBHXuQL_ivcUR&index=8
https://www.youtube.com/watch?v=kIqgcMvC4Uw&list=PLRVrNjqJtZljg-ainSqTpBHXuQL_ivcUR&index=9
Objetivo de la actividad:
Aplicar la sintaxis de procedimientos almacenados y de transacciones para mejorar el rendimiento y seguridad de una base de datos.
Practica lo que aprendiste
I. Para realizar esta actividad instala en tu servidor de SQL Server la base de datos llamada AdventureWorks siguiendo estos pasos:
1. Descarga el archivo con extensión .bak del siguiente link y guárdalo:
https://drive.google.com/file/d/0B3W6zmbk2szdUXp4dW1oLTJNQTg/view
2. Abre el gestor de base de datos, da clic derecho sobre Base de datos y selecciona Restaurar base de datos.
4. Selecciona la opción para la base y haz clic en el botón con los tres puntos (…)
4. Escribe AdventureWorks para el nombre de la base de datos
5. Haz clic en el botón Agregar y localiza el archivo que descargaste con la extensión .bak
6. Una vez seleccionado, marca el cuadro de Restaurar y presiona Aceptar.
Resolución
Escribe el código para que crees los siguientes procedimientos almacenados.
a) Crea un procedimiento almacenado que devuelva todos los empleados (nombre y apellidos), sus puestos y el nombre del departamento al que corresponden a partir de una vista. No
utilices ningún parámetro de entrada.
SELECT P.FirstName AS 'NOMBRE', P.LastName AS 'APELLIDO', E.JobTitle AS 'PUESTO',
D.Name AS 'DEPARTAMENTO' FROM HumanResources.Department D
RIGHT JOIN HumanResources.EmployeeDepartmentHistory EDH ON D.DepartmentID = EDH.DepartmentID
INNER JOIN HumanResources.Employee E ON EDH.BusinessEntityID = E.BusinessEntityID
INNER JOIN Person.Person P ON E.BusinessEntityID = P.BusinessEntityID
b) Crea un procedimiento almacenado que sólo devuelva el empleado especificado (nombre y apellidos), su puesto y el nombre del departamento que corresponde a partir de una vista.
Utiliza parámetros de entrada.
create procedure consultarEmpleado @ID nchar(10)
AS
BEGIN
SELECT P.FirstName AS 'NOMBRE', P.LastName AS 'APELLIDO', E.JobTitle AS 'PUESTO',
D.Name AS 'DEPARTAMENTO' FROM HumanResources.Department D
RIGHT JOIN HumanResources.EmployeeDepartmentHistory EDH
ON D.DepartmentID = EDH.DepartmentID
INNER JOIN HumanResources.Employee E ON EDH.BusinessEntityID = E.BusinessEntityID
INNER JOIN Person.Person P ON E.BusinessEntityID = P.BusinessEntityID
WHERE E.NationalIDNumber=@ID
END
c) Crea el procedimiento almacenado que devuelva una lista de productos con precios que no superen un importe especificado.
Otra solucion en el link de pageweb MicrosoftSQLServer:
CREATE PROCEDURE dbo.productosImporteEspecifico
@subCategoria varchar(50),
@importeEspecificado money,
@getPrecioParaComparar money OUTPUT,
@getImporteEspecificado money OUTPUT
AS
SELECT P.Name, P.ListPrice FROM Production.ProductSubcategory PS JOIN Production.Product P
ON PS.ProductSubcategoryID=P.ProductSubcategoryID WHERE PS.Name LIKE @subCategoria AND P.ListPrice < @importeEspecificado;
SET @getPrecioParaComparar= (SELECT MAX(P.ListPrice) from Production.ProductSubcategory PS JOIN Production.Product P
ON PS.ProductSubcategoryID=P.ProductSubcategoryID WHERE PS.Name LIKE @subCategoria and p.ListPrice < @importeEspecificado);
SET @getImporteEspecificado=@importeEspecificado;
GO
EJECUTAR PROCEDIMIENTO
DECLARE @costoMax money, @importe money;
EXECUTE productosImporteEspecifico '%Bikes%' , 1, @costoMax OUTPUT, @importe OUTPUT
IF @costoMax <= @importe
BEGIN
PRINT 'Los productos pueden ser vendidos por menos que ' + RTRIM(cast(@importe AS varchar(20))) + ' dolares.'
END
ELSE
BEGIN
PRINT ' NO HAY PRODUCTOS DE VENTA menor que ' + RTRIM(CAST(@importe AS varchar(20))) + ' dolares.'
END
III. Escribe el código para que crees las siguientes transacciones.
a) Crea una transacción que haga un INSERT y un UPDATE a las tablas HumanResourses.Employee, agrega una condicional de error que entregue mensajes de ERROR o de BIEN si se hizo un ROLLBACK o un COMMIT respectivamente.
BEGIN TRANSACTION
UPDATE HumanResources.Employee SET VacationHours=30 WHERE BusinessEntityID=2300
INSERT INTO HumanResources.Employee (BusinessEntityID, NationalIDNumber, LoginID,
JobTitle, BirthDate, MaritalStatus, Gender, HireDate, SalariedFlag, VacationHours,
SickLeaveHours, CurrentFlag, rowguid, ModifiedDate)
VALUES (2300, N'300847284', N'adventure-works\ken300', N'Chief Executive Officer',
'1959-03-02', N'S', N'M', '1999-02-15', CONVERT(bit, 'True'), 99, 69, CONVERT(bit, 'True'),
'300251e5-96a3-448d-981e-0f99d789110d', '2004-07-31 00:00:00.000');
IF(@@ERROR<>0)
BEGIN
ROLLBACK
PRINT('ERROR')
END
ELSE
BEGIN
COMMIT
PRINT('BIEN')
END
b) Crea una transacción dentro de un procedimiento almacenado que realice un INSERT a la tabla de Production.Products, el procedimiento debe tener parámetros de entrada y la transacción debe entregar mensajes de ERROR o de BIEN si se hizo un ROLLBACK o un COMMIT
respectivamente.
INSERT INTO Production.Product(Name, ProductNumber, MakeFlag, FinishedGoodsFlag, Color,
SafetyStockLevel, ReorderPoint, StandardCost, ListPrice, Size, SizeUnitMeasureCode,
WeightUnitMeasureCode, Weight, DaysToManufacture, ProductLine, Class, Style,
ProductSubcategoryID, ProductModelID,SellStartDate, SellEndDate, DiscontinuedDate,
rowguid, ModifiedDate) VALUES ( N'Adjustable Race1000', N'1000AR-5381'
, CONVERT(bit, 'False'), CONVERT(bit, 'False'), NULL, 1000, 750, 0.00, 0.00,
NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL,
'1998-06-01 00:00:00.000', NULL, NULL,'100015b7-08f7-4c0d-acb1-d734ba44c0c8',
'2004-03-11 10:01:36.827')
INSERT DE PRUEBA
CREATE PROCEDURE insertarProducto
@Name VARCHAR(50), @ProductNumber VARCHAR(25), @MakeFlag BIT , @FinishedGoodsFlag BIT,
@Color VARCHAR(15), @SafetyStockLevel SMALLINT, @ReorderPoint SMALLINT,
@StandardCost MONEY, @ListPrice MONEY, @Size VARCHAR(5), @SizeUnitMeasureCode CHAR(3),
@WeightUnitMeasureCode CHAR(3), @Weight DECIMAL(8,2), @DaysToManufacture INT,
@ProductLine CHAR(2), @Class CHAR(2), @Style CHAR(2), @ProductSubcategoryID INT,
@ProductModelID INT, @SellStartDate DATETIME, @SellEndDate DATETIME,
@DiscontinuedDate DATETIME, @ModifiedDate DATETIME
AS
BEGIN TRANSACTION
INSERT INTO Production.Product(Name, ProductNumber, MakeFlag, FinishedGoodsFlag, Color,
SafetyStockLevel, ReorderPoint, StandardCost, ListPrice, Size, SizeUnitMeasureCode,
WeightUnitMeasureCode, Weight, DaysToManufacture, ProductLine, Class, Style,
ProductSubcategoryID, ProductModelID, SellStartDate, SellEndDate, DiscontinuedDate, ModifiedDate)
VALUES (@Name, @ProductNumber, @MakeFlag, @FinishedGoodsFlag, @Color, @SafetyStockLevel,
@ReorderPoint, @StandardCost, @ListPrice, @Size, @SizeUnitMeasureCode, @WeightUnitMeasureCode,
@Weight, @DaysToManufacture, @ProductLine, @Class, @Style, @ProductSubcategoryID,
@ProductModelID, @SellStartDate, @SellEndDate, @DiscontinuedDate, @ModifiedDate)
IF(@@ERROR<>0)
BEGIN
ROLLBACK
PRINT('ERROR')
END
ELSE
BEGIN
COMMIT
PRINT('BIEN')
END
GO
Descargar la actividad en formato PDF.
Vínculo de la actividad:
https://www.dropbox.com/s/i0fcwtxs8061lct/lecccion3%20Actividad2.pdf?dl=0
Realizado por: Danilo Flores
Descargar Libros
1.- ALGEBRA de BALDOR
Enlace de descarga:https://www.dropbox.com/s/11dpqiwg3z98pgy/ALGEBRA%20de%20BALDOR.pdf?dl=0
2.- Solucionario del Algebra de Baldor
Enlace de descarga:https://www.dropbox.com/s/8gsy6risr5pi3r2/Solucionario%20baldor.pdf?dl=0
Cuento del leñador y su hacha
Dicen que una vez un leñador muy trabajador se presentó a una oferta de empleo en un bosque. Viendo su motivación y su energía, le contrataron enseguida. El jefe le dio un hacha y le mando a cortar árboles.
Cuando acabó el primer día, el dedicado leñador había conseguido traer 18 árboles, una cifra impresionante. Pero el hombre era muy trabajador y quería demostrar que podía hacerlo todavía mejor, y el día siguiente salió a batir su record. Sin embargo, al finalizar el día, solo pudo volver con 15 troncos.
Conforme iban pasando los días el leñador se esforzaba por superarse, pero pese a gastar tanta energía, cada vez volvía con menos árboles. Estaba desesperado.
Fue a hablar con su jefe y le explicó la situación.
– No lo entiendo. Por más que me esfuerce, cada día corto menos árboles.
El jefe le miró y preguntó:
– ¿Cuánto haces que no afilas el hacha?
– ¿Afilar? No tengo tiempo para afilar. Estoy muy ocupado cortando árboles.
Enseñanza
Quizás para cada uno de nosotros afilar el hacha tenga un sentido diferente.
En el trabajo, si no tenemos a nadie para orientarnos, es muy posible que acabemos esforzándonos como esclavos en tareas poco productivas, porque es muy fácil perder la perspectiva.
Suscribirse a:
Comentarios (Atom)
-
package piramide_asteriscos; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Pira...
-
Muebles de Melamina Hoy en día la mayoría de los muebles que se fabrican son de tableros de aglomerado o de DM (lo que solemos llamar cart...















