Вы находитесь на странице: 1из 7

ESCUELA POLITCNICA NACIONAL

FACULTAD DE INGENIERA DE SISTEMAS


INGENIERA EN SISTEMAS INFORMTICOS Y DE COMPUTACIN

PERODO ACADMICO: 2016_A


ASIGNATURA: SIC426 BASES DE DATOS GRUPO: GR1
PROFESOR: MSc. Monserrate Intriago
TIPO DE INSTRUMENTO: REPORTE DE TRABAJO
INSTRUMENTO N: 5
TTULO: Procedimientos almacenados y Funciones
FECHA DE ENTREGA: 08/07/2016
GRUPO: Nmero del Grupo (si es trabajo grupal)
INTEGRANTES: ALEXIS MIRANDA, KEVIN CARATE, JOSE TAYUPANTA, DAVID
MORENO

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

2.1. Sintaxis creacin de funciones definidas por el programador en SQL Server


Al igual que las funciones de los lenguajes de programacin, las funciones definidas por el
usuario de SQL Server son rutinas que aceptan parmetros, realizan una accin, como un
clculo complejo, y devuelven el resultado de esa accin como un valor. El valor devuelto
puede ser un valor escalar nico o un conjunto de resultados.

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.

SELECT RIGHT(columna, 5) from tabla where condicin. [4]


2.2.8. SUBSTRING
Devuelve parte de una expresin de caracteres, binaria, de texto o de imagen en SQL
Server.
SUBSTRING (expression ,start , length )
expression
Es una expresin de tipo character, binary, text, ntext o image.
start
Es un entero o una expresin bigint que especifica dnde comienzan los caracteres
devueltos. Si start es menor que 1, la expresin devuelta comenzar en el primer
carcter especificado en expression. En este caso, el nmero de caracteres que se
devuelve es el valor de la suma de start ylength 1 o 0, el que sea mayor. Si start es
mayor que el nmero de caracteres de la expresin de valor, se devuelve una
expresin de longitud cero.
length
Es un entero positivo o una expresin bigint que especifica cuntos caracteres
de expression se van a devolver. Si length es negativo, se genera un error y finaliza la
instruccin. Si la suma de start y length es mayor que el nmero de caracteres
de expression, se devuelve la expresin de valor completa que empieza en start.

2.2.9. RTRIM

RTRIM: Elimina todos los espacios en blanco del comienzo de la cadena (Right).

Sintaxis
RTRIM ( character_expression )

Argumentos

character_expression

Es una expresin de caracteres. character_expression puede ser una constante, una


variable o columna de cualquier ndole de caracteres o datos binarios.

Tipos de valores de Salida


varchar o nvarchar

2.2.10. LTRIM

LTRIM : Elimina todos los espacios en blanco del comienzo de la cadena (Left).

Sintaxis
LTRIM ( character_expression )

Argumentos

character_expression

Es una expresin de caracteres. character_expression puede ser una constante, una


variable o columna de cualquier ndole de caracteres o datos binarios.

Tipos de valores de Salida

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.

data_type Es el tipo de datos de destino. Incluye xml, bigint y sql_variant. No se


pueden utilizar tipos de datos de alias. Para obtener ms informacin acerca de los
tipos de datos disponibles, vea Tipos de datos (Transact-SQL).

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.5. Escriba un procedimiento almacenado que liste SalesOrderID, OrderDate, ShipDate,


TotalDue, cantidad productos; cuyo valor total sea mayor que el valor promedio entre
todos los pedidos. Muestre ordenado por TotalDue descendentemente.

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.8. Cree una funcin o procedimiento almacenado, que muestre NationalIDNumber,


LastName y FirstName como una sola columna, JobTitle, Gender de los Employee que
cumplen con un JobTitle indicado.

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.12. Crear un procedimiento almacenado que muestre como columnas Ao,


TotalPedidosEnero, TotalPedidosFebrero, TotalPedidosMarzo, TotalPedidosAbril,
TotalPedidosMayo, TotalPedidosJunio, TotalPedidosJulio, TotalPedidosAgosto,
TotalPedidosSeptiembre, TotalPedidosOctubre, TotalPedidosNoviembre,
TotalPedidosDiciembre (ShipDate de SalesOrderHeader). Ao se refiere al ao en que
un pedido fue entregado (ShipDate de SalesOrderHeader), y las dems columnas son el
total o conteo de pedidos realizados en cada mes del ao. [Cree las subconsultas o
funciones que considere necesario].

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

El procedimiento almacenado ayuda la reutilizacin del cdigo. El cdigo de cualquier


operacin de base de datos redundante resulta un candidato perfecto para la
encapsulacin de procedimientos.
Utilizar funciones nos permite optimizar los programas y el tratamiento de la
informacin ya que mediante estas evitamos realizar consultas innecesarias y por
ende realizamos menos lneas de codificacin en el motor de base de datos.
El manejo de la sentencias como year, month, day, Datepart son muy necesarias al
momento de realizar consultas que involucren manejo de datos mediante la utilizacin
de fechas o partes de ciertas fechas.

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

[2] MICROSOFT. (2016) Microsoft Developer Network. [Online]. https://msdn.microsoft.com/es-


ec/library/ms177532.aspx

[3] anonimo. tutoriales programacion ya. [Online].


http://www.tutorialesprogramacionya.com/sqlserverya/temarios/descripcion.php?cod=33&punto=27&inicio=

[4] Microsoft. Microsoft TechNet. [Online]. https://technet.microsoft.com/es-es/library/ms187928(v=sql.105).aspx

[5] Microsot. (2016) Microsoft Developer Network. [Online]. https://msdn.microsoft.com/es-ec/library/hh231515.aspx


[6]"RTRIM (Transact-SQL)", Msdn.microsoft.com, 2016. [Online]. Disponible: https://msdn.microsoft.com/en-
us/library/ms178660.aspx. [Ingresado: 08- Jul- 2016].

Anexo. Modelo de Datos

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

rowguid NationalIDNumber FirstName

ModifiedDate LoginID MiddleName

OrganizationNode LastName

OrganizationLevel Suffix

SpecialOffer (Sales) JobTitle EmailPromotion


SpecialOfferID AdditionalContactInfo
BirthDate
Description Demographics
MaritalStatus
DiscountPct rowguid
Gender
Type ModifiedDate
HireDate
Category
SalariedFlag
StartDate
VacationHours
EndDate
SickLeaveHours
MinQty
CurrentFlag
MaxQty
rowguid
rowguid
ModifiedDate
ModifiedDate

Вам также может понравиться