martes, 11 de agosto de 2009

SP, TRANSACT SQL Y UDF AND VIEW...

Bueno, en el mundo de la bases de datos podemos encontrarnos con diversos manejadores que tienen herramientas muy buenas para ayudarnos a salir de los problemas que crea el tener tanta información en los sistemas de gestión. Los cuales no sirven de nada si no sabes realizar unos buenos reportes, además de que éstos mismos sean útiles para el fin que son creados.

Bueno empezaré por definir cada una de estas valiosas herramientas que trae SQL server 2005 dentro de ella.

STORED PROCEDURE. Este nombre se le da por ser procedimiento que se ejecuta dentro del motor de la base de datos, son muy efectivos para no sobrecargar la red cuando se ejecutan, ya que todo el resultado se envía al cliente y no sobrecarga la red con las operaciones de extracción y devolución de datos.

VIEWs: en mi definición las vistas son pequeñas tablas que se pueden generar apartir de las tablas principales de la base de datos. Éstas pueden ser utilizadas para tener reportes sin necesidad de un código extra y sin necesidad de disminuir el rendimiento del servidor al momento de ejecutarlos. Las vistas, según entendí yo, se estan actualizando continuamente con los procesos de consulta que se hacen a éstas. Pero a la par de ser ventaja esto viene tambien a disminuir también un poco al rendimiento de los procesos de update, delete, etc. de los registros. pues no solo escriben en la tabla principal, si no los datos se reflejan en las vistas.

UDF. User defined function. En español funciones definidas por el usuario, estas utilizan código de transact sql. Las funciones definidas por el usuario se crean con la instrucción CREATE FUNCTION, se modifican con la instrucción ALTER FUNCTION y se quitan con la instrucción DROP FUNCTION. Los nombres completos de las funciones definidas por el usuario (schema_name.function_name) deben ser únicos. Además de que en teoría dan mas rendimiento que las vistas.

Bueno, estos son algunos conceptos que en estos días he aprendido.

Ahorita estoy definiendo que es lo que tendré que hacer con un reporte que me arroje ventas reales por sucursal, familias de artículos y me arroje el promedio.

Ahora, el código que tengo es el siguiente:

declare @familia as varchar
set @familia=(select distinct(itmsgrpcod) from vtaxfam where itmsgrpnam='[%0]')
SELECT itemcode,sum(quantity) as 'total ventas', sum(quantity)/12 as 'total promedio'
FROM vtaxfam
WHERE itemcode IS NOT NULL and docdate>'2008/05/02' and docdate<'2009/05/31' and @familia=itmsgrpcod group BY itemcode Tengo que hacer unos joins o unas uniones para que me salgacomo quiero, pero ahi voy, trataré de entender bien como sacar esto. :) cuando lo haga lo posteo.