Академический Документы
Профессиональный Документы
Культура Документы
1. OBJETIVOS
- Explicar los conceptos y trminos relacionados con funciones creadas por el programador
de base de datos.
- Describir la sintaxis de varias funciones del DMBS para manejo de fechas y cadenas.
- Crear funciones y procedimientos almacenados para resolver diversas cuestiones de
mediana complejidad.
- Utilizar los conocimientos adquiridos para realizar los ejercicios propuestos en este
informe, y mejorar los conocimientos adquiridos.
2. MARCO TERICO
Las ventajas de utilizar las funciones definidas por el usuario en SQL Server son:
Permiten una programacin modular.
Puede crear la funcin una vez, almacenarla en la base de datos y llamarla desde
el programa tantas veces como desee. Las funciones definidas por el usuario se
pueden modificar, independientemente del cdigo de origen del programa.
Permiten una ejecucin ms rpida.
Al igual que los procedimientos almacenados, las funciones definidas por el
usuario Transact-SQL reducen el costo de compilacin del cdigo Transact-SQL
almacenando los planes en la cach y reutilizndolos para ejecuciones repetidas.
Esto significa que no es necesario volver a analizar y optimizar la funcin definida
por el usuario con cada uso, lo que permite obtener tiempos de ejecucin mucho
ms rpidos.
Pueden reducir el trfico de red.
Una operacin que filtra datos basndose en restricciones complejas que no se
puede expresar en una sola expresin escalar se puede expresar como una
funcin. La funcin se puede invocar en la clusula WHERE para reducir el nmero
de filas que se envan al cliente. [1]
2.2. Descripcin y Sintaxis de las siguientes funciones segn SQL Server:
2.2.1. GETDATE()
Retorna la fecha y hora actuales
SELECT GETDATE () AS CurrentDateTime [2]
2.2.2. DATEDIFF
(Partedelafecha, fecha1, fecha2): calcula el intervalo de tiempo (segn el primer
argumento) entre las 2 fechas. El resultado es un valor entero que corresponde a
fecha2-fecha1. Los valores de "partedelafecha) pueden ser los mismos que se
especificaron anteriormente. Ejemplos:
select datediff (day,'2005/10/28','2006/10/28');
Retorna 365 (das). [3]
2.2.3. DATEPART
Datepart (partedefecha, fecha): retorna la parte especfica de una fecha, el ao,
trimestre, da, hora, etc.
Los valores para "partedefecha" pueden ser: year (ao), quarter (cuarto), month
(mes), day (da), week (semana), hour (hora), minute (minuto), second (segundo) y
millisecond (milisegundo). Ejemplos:
select datepart(month,getdate());
retorna el nmero de mes actual; [3]
2.2.4. LEN
Devuelve el nmero de caracteres de la expresin de cadena especificada, con
exclusin de blancos a la derecha.
LEN (string_expression)
LEN excluye los blancos de cola. Si esto es un problema, considere el uso de
la DATALENGTH (Transact-SQL) funcin que no recorta la cadena. Si el procesamiento
de una cadena Unicode, DATALENGTH devolver el doble del nmero de caracteres. El
siguiente ejemplo demuestra LEN y DATALENGTH con un espacio al final.
2.2.5. CONCAT
Devuelve una cadena que es el resultado de concatenar dos o ms valores de cadena.
CONCAT ( string_value1, string_value2 [, string_valueN ] )
string_value Valor de cadena que se va a concatenar con los dems valores.
Cadena cuyo tipo y longitud dependen de la entrada. [4]
2.2.6. LEFT
Devuelve la parte izquierda de una cadena de caracteres con el nmero de caracteres
especificado.
LEFT ( character_expression , integer_expression )
2.2.7. RIGHT
Devuelve la parte derecha de una cadena de caracteres con el nmero de caracteres
especificado.
RIGHT ( character_expression , integer_expression )
Devuelve varchar cuando character_expression es de un tipo de datos de caracteres
no Unicode.
Devuelve nvarchar cuando character_expression es de un tipo de datos de caracteres
Unicode.
2.2.9. RTRIM
RTRIM: Elimina todos los espacios en blanco del comienzo de la cadena (Right).
Sintaxis
RTRIM ( character_expression )
Argumentos
character_expression
2.2.10. LTRIM
LTRIM : Elimina todos los espacios en blanco del comienzo de la cadena (Left).
Sintaxis
LTRIM ( character_expression )
Argumentos
character_expression
varchar o nvarchar[6]
2.2.11. CONVERT
Convierte una expresin de un tipo de datos en otro en SQL Server 2008 R2.
Syntax for CONVERT:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Expression Es cualquier expresin vlida.
Length Es un nmero entero opcional que especifica la longitud del tipo de datos de
destino. El valor predeterminado es 30.
Style
Es una expresin de tipo entero que especifica cmo la funcin CONVERT
traducir expression. Si style es NULL, se devuelve NULL. data_type determina el
intervalo. Para obtener ms informacin, vea la seccin Comentarios.
Devuelve el tipo expression traducido al tipo data_type. [5]
3. DESARROLLO DE LA PRCTICA
En base al modelo de datos anexo al final de este documento, crear los scripts en archivos, con
extensin sql, necesarios para dar solucin a los siguientes planteamientos. Incluir el nmero de
ejercicio en cada script.
Todos los scripts en archivos .sql deben ser comprimidos y subidos al aula virtual como un
segundo archivo en la tarea de evaluacin. No incluir las sentencias SQL en este documento.
3.1. Crear un procedimiento almacenado que liste Name, Das de Venta = Dias entre
SellEndDate y SellStartDate, de los productos (Product). Mostrar los resultados
ordenados por ProductLine. SellStartDate no debe ser nulo.
3.2. Crear una funcin que retorne el promedio del valor total (TotalDue) de Pedidos
(SalesOrderHeader).
3.3. Crear una funcin que retorne el promedio del valor total (TotalDue) de Pedidos
(SalesOrderHeader) en un mes y ao indicados.
3.4. Crear una funcin que retorne la cantidad de productos (nmero de detalles,
SalesOrderDetail) de un pedido indicado (SalesOrderID).
3.6. Cree una funcin o procedimiento almacenado que muestre SalesOrderID, OrderDate,
ShipDate, TotalDue, cantidad productos; cuyo valor total sea mayor que el valor
promedio entre todos los pedidos en un mismo ao indicado.
3.7. Cree un procedimiento almacenado que liste mes, ao (ShipDate), y el total de pedidos
entregados (conteo de pedidos). Mostrar ordenando ascendentemente por ao y mes.
3.9. Cree una funcin o procedimiento almacenado, que muestre CreditCardID, CardType,
ExpMonth, ExpYear de las tarjetas de crdito (CreditCard) que expiran en un ao
indicado (ExpYear).
3.10. Cree una funcin que muestre Name, Size de los productos (Product),
OrderDate, ShipDate, TotalDue de una orden (SalesOrderHeader) indicada por su
SalesOrderID.
3.11. Cree una funcin que retorne como una sola columna FirstName y LastName del
cliente (Customer) de una orden (SalesOrderHeader) indicada por su SalesOrderID.
3.13. Crear un procedimiento almacenado que muestre para cada mes (enero a
diciembre) el ao en de mayor nmero de rdenes entregadas (ShipDate de
SalesOrderHeader). [Puede serle de utilidad el procedimiento del numeral anterior].
4. CONCLUSIONES
5. RECOMENDACIONES
Siempre observar las tablas con las que se va a trabajar y de las cuales se va a tomar
datos, para facilitar el trabajo.
Utilizar tablas temporales para modificar y trabajar los datos de ciertas tablas de la
cuales no queremos alterar ningn registro y mediante estas tambin facilitar el
manejo de los datos.
Utilizar funciones para ejecutar de manera ms rpida los cdigos en Sql y tambin
porque las funciones son reutilizables y evitan que cada vez estemos creando nuevas
consultas que muchas veces realizan lo mismo que la funcin creada.
6. BIBLIOGRAFA
[1] Microsoft. (2016) Microsoft Developer Network. [Online]. https://msdn.microsoft.com/es-
es/library/ms191007(v=sql.120).aspx
SalesOrderHeader (Sales)
SalesOrderID SalesOrderDetail (Sales) Product (Production)
SalesOrderID ProductID
RevisionNumber
FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID
SalesOrderDetailID Name
OrderDate
CarrierTrackingNumber ProductNumber
DueDate
OrderQty MakeFlag
ShipDate
ProductID FinishedGoodsFlag
Status
SpecialOfferID Color
FK_SalesOrderDetail_Product_ProductID
OnlineOrderFlag
UnitPrice SafetyStockLevel
SalesOrderNumber
UnitPriceDiscount ReorderPoint
PurchaseOrderNumber
LineTotal StandardCost
AccountNumber
rowguid ListPrice
CustomerID
ModifiedDate Size
SalesPersonID
TerritoryID SizeUnitMeasureCode
BillToAddressID WeightUnitMeasureCode
ShipToAddressID Weight
CreditCard (Sales)
ShipMethodID DaysToManufacture
CreditCardID
FK_SalesOrderHeader_CreditCard_CreditCardID
CreditCardID ProductLine
CardType
CreditCardApprovalCode Class
CardNumber
CurrencyRateID Style
ExpMonth
SubTotal ProductSubcategoryID
ExpYear
TaxAmt ProductModelID
ModifiedDate
Freight SellStartDate
TotalDue SellEndDate
Comment DiscontinuedDate
rowguid rowguid
ModifiedDate ModifiedDate
FK_SalesOrderHeader_Customer_CustomerID
Customer (Sales)
CustomerID
Person (Person)
fk FK_Customer_PersonID__Person_BusinessEntityID
PersonID BusinessEntityID
StoreID PersonType
TerritoryID NameStyle
Employee (HumanResources) FK_Employee_Person_BusinessEntityID
AccountNumber BusinessEntityID Title
OrganizationNode LastName
OrganizationLevel Suffix