You are on page 1of 7

Universidad de Talca Facultad de Ciencias Empresariales Contador Pblico Auditor Implementacin de Sistemas de Informacin Gua 02 Alias y Procedimientos Almacenados

En SQL los Alias estn definidos para ser utilizados tanto en Columnas como en Tablas. Bsicamente un Alias es utilizado para hacer que la Columna o Tabla involucrada en la consulta sea ms leble o entendible. Es decir, al usar un Alias se busca hacer del nombre de una Columna ms fcil de recordar o utilizar. Por ejemplo: Seleccionar el nombre de los estudiantes. Alias para Columnas: Select est_nombre Nombre From detalle_estudiantes En la consulta anterior la columna est_nombre recibe el Alias de Nombre por lo que al presentarse los resultados de la consulta, el nombre de la columna que aparecer no ser el original est_nombre sino el definido por el Alias, Nombre. Alias para Tablas: Select a.est_nombre From detalle_estudiantes a En la consulta anterior, para la tabla detalle_estudiantes se ha definido el Alias a, por lo que al seleccionar la columna est_nombre, debe definirse que sta pertenece a la tabla detalle_estudiantes, y para ello se utiliza a.est_nombre, es decir, Alias.columna_seleccionada. Tambin puede utilizarse la forma detalle_estudiantes.est_nombre, sin embargo es claramente ms prctico el hacer uso del Alias para as evitar el escribir el nombre completo de la tabla y slo referirnos a ella a travs de su Alias.

Los Principales usos del Alias son: Hay ms de una tabla involucrada en la consulta, por lo que utilizar la forma nombre_tabla.nombre_columna es menos prctico que usar alias.nombre_columna. Se estn utilizando funciones en la consulta. El nombre de la columna es demasiado largo o bien por su complejidad es irrecordable. Ms de una columna estn siendo combinadas.

Profesor Ayudante

Alex Ovalle Ramn Miranda N.

Pgina 1

Universidad de Talca Facultad de Ciencias Empresariales Contador Pblico Auditor


Un Procedimiento Almacenado es un grupo de declaraciones de Transact-SQL compilados en una nica ejecucin, es decir, un programa almacenado fsicamente en la base de datos. Estos procedimientos, se usan a menudo, pero no siempre, para realizar consultas SQL sobre los objetos de la base de datos de una manera abstracta, desde el punto de vista del cliente de la aplicacin. Un procedimiento almacenado permite agrupar en forma exclusiva parte de algo especfico que se desee realizar o, mejor dicho, el SQL apropiado para dicha accin. Sintaxis de un Procedimiento Almacenado en SQL Server. create procedure "nombre_procedimiento" (@parametro1 tipo_dato(longitud_datos), @parametro2 tipo_dato(longitud_datos), @parametro3 tipo_dato(longitud_datos), @parametroN tipo_dato(longitud_datos)) as consulta SQL utilizando los parmetros definidos anteriormente Go

Cabe mencionar que los parmetros incluidos en un Procedimiento Almacenado varan dependiendo de cada procedimiento y lo que se busca de ste. Es decir, si la consulta SQL que se ejecutar en el procedimiento es del tipo INSERT INTO, los parmetros involucrados sern aquellos referidos a los datos que se buscan agregar a la base de datos. Si se trata de una consulta tipo UPDATE, los parmetros usados respondern a los datos de la base que se buscan actualizar o modificar. En el caso de un DELETE FROM, el o los parmetros utilizados sern los que condicionan la eliminacin de la base de datos. Mientras que cuando hablamos de una consulta tipo SELECT, el o los parmetros a utilizar sern aquellos que se utilizarn como referencia para la bsqueda y seleccin de datos de la base. Es decir, los parmetros corresponden a los datos que deben ser ingresados por el usuario para que la consulta sea realizada satisfactoriamente.

Profesor Ayudante

Alex Ovalle Ramn Miranda N.

Pgina 2

Universidad de Talca Facultad de Ciencias Empresariales Contador Pblico Auditor


Ejemplos Aplicados. Alias para Tablas: Si se busca seleccionar los clientes que compraron cierto producto en Agosto, y las tablas involucradas son Cliente, Venta, Detalle_Venta y Producto, donde las relaciones de las mismas son: Cliente (1) => (n) Venta Venta (n) => (n) Producto [Al existir relacin n-n, se procede a normalizar la misma, resultando lo siguiente] Venta (n) => (1) Detalle_Venta (1) => (n) Producto

Entendindose lo anterior, la consulta que da como a continuacin se muestra: Select a.cli_rut, a.cli_nombre, d.prod_nombre From Cliente a, Venta b, Detalle_Venta c, Producto d Where a.cli_rut = b.cli_rut and b.vent_idn =c.vent_idn and d.prod_idn = c.prod_idn and d.prod_nombre = nombre_producto and datepart (month, b.vent_fecha) = 8 group by a.cli_rut, a.cli_nombre, d.prod_nombre order by a.cli_nombre

Paso a Paso para llegar definir la consulta: Es recomendable partir definiendo las tablas involucradas en la consulta, no slo para el uso de Alias, sino tambin para las consultas en general, pues de esta manera se puede tener en vista desde el principio donde se encuentran los atributos que nos permitirn dar forma a la consulta. En este caso, tenemos que en el FROM de la consulta se definen las tablas y seguido de ello, encontramos el alias determinado para cada tabla. En este caso particular se utilizan las letras del alfabeto de la A a la D, mas esto no significa que el uso del Alias est restringido a esta frmula. Pueden utilizarse las letras iniciales del nombre de la tabla, palabras clave fcilmente relacionables a la tabla, etc. En trminos generales, el Alias es definido por el usuario para conseguir recordar fcilmente una tabla en especfico, por lo que depende del usuario el alias que se utilizar. Luego de determinar las tablas y los Alias a ser utilizados, se procede a determinar los atributos que sern seleccionados para llevar a cabo la consulta.

Profesor Ayudante

Alex Ovalle Ramn Miranda N.

Pgina 3

Universidad de Talca Facultad de Ciencias Empresariales Contador Pblico Auditor


En este caso particular, se busca determinar los clientes que compraron cierto producto en cierto mes, por lo que se utilizarn los atributos en funcin de conseguir dicho resultado. Adems hay que indicar que al haber definido previamente los Alias, al agregar un atributo al SELECT de la consulta, el Alias debe estar presente en la forma alias.nombre_columna. Los atributos utilizados en este caso son: o o o a.cli_rut a.cli_nombre d.prod_nombre

Lo que responde al hecho de que lo que buscamos son clientes. Ahora viene la parte compleja de una consulta realizada sobre tablas que previamente contaban con una relacin n n y han sido normalizadas. En el WHERE de la consulta de deben definir TODAS las condiciones para que la consulta responda slo a lo que se busca responder, es decir, arroje el resultado correcto. Cuando la consulta es realizada sobre tablas con una antigua relacin n - n ya normalizada, se debe prestar atencin a que la clave principal de las tablas originales corresponda con la clave fornea de la tabla creada para normalizar. Esto tambin aplica para aquellas tablas involucradas en la consulta que presentan una relacin n 1 o 1 n. Es por esto que en la consulta que estamos utilizando como ejemplo se aprecia lo siguiente: a.cli_rut = b.cli_rut and b.vent_idn =c.vent_idn and d.prod_idn = c.prod_idn Lo que sin la aplicacin de Alias correspondera a lo siguiente cliente.cli_rut = venta.cli_rut and venta.vent_idn = detalle_venta.vent_idn and producto.prod_idn = detalle_venta.prod_idn Por tanto necesitamos que: o o o El cli_rut de la tabla Cliente sea igual al cli_rut de la tabla Venta, pues inicialmente buscamos clientes a los que se les haya vendido algn producto. El vent_idn de Venta sea igual al vent_idn de Detalle_Venta. Esto con el fin de verificar que en ambas anotaciones hablamos de la misma ocurrencia. El prod_idn de Producto sea igual al prod_idn de Detalle_Venta. Esto con el fin de verificar que en ambas anotaciones hablamos de la misma ocurrencia, es decir, el producto vendido sea el mismo que figura en los registros de productos de la empresa.

En lo que a condiciones originadas en el nmero de tablas involucradas se refiere, se entiende que si N es el nmero de tablas involucradas, N-1 es el nmero de condiciones mnimo a utilizar. Por lo tanto, debido que en esta consulta se han utilizado cuatro tablas, se han definido tres condiciones.

Profesor Ayudante

Alex Ovalle Ramn Miranda N.

Pgina 4

Universidad de Talca Facultad de Ciencias Empresariales Contador Pblico Auditor


Ahora el punto que queda por verificar es la condicin referida al mes especfico de la consulta. Para tales efectos se utiliza la funcin DatePart, la que sirve para filtrar por fecha. Su sintaxis es la siguiente. datepart ([day, month, year], columna_fecha) = dd, mm, yyyy En este caso particular, la funcin DatePart adopta la siguiente forma: datepart (month, b.vent_fecha) = 8 Es decir, se ha definido que DatePart filtre por mes (month), sobre el atributo b.vent_fecha y use como referencia de bsqueda 8, es decir, Agosto. Finalmente lo nico que queda por definir es el nombre del producto que se busca saber fue vendido en Agosto, por lo que se procede como sigue: d.prod_nombre = nombre_producto Con esto se ha desglosado cada parte del WHERE de la consulta sobre la cual estamos trabajando. Finalmente hay que mencionar que el GROUP BY debe contener los mismos valores que el SELECT de la consulta, mientras que el ORDER BY debe referirse a la columna que se busca sirva de referencia para ordenar al resto, ya sea en orden ascendente (asc) o descendente (desc).

Profesor Ayudante

Alex Ovalle Ramn Miranda N.

Pgina 5

Universidad de Talca Facultad de Ciencias Empresariales Contador Pblico Auditor


Procedimientos Almacenados: Una de las partes ms importantes en la confeccin de un Procedimiento Almacenado corresponde a la determinacin de los parmetros involucrados en l. Un ejemplo de procedimiento almacenado es el siguiente. create procedure "empresa_guarda" (@emp_rut varchar(12), @emp_nombre varchar(50), @emp_direccion varchar(100), @emp_telefono varchar(9)) as insert into Empresa (emp_rut, emp_nombre, emp_direccion, emp_telefono) values (@emp_rut, @emp_nombre, @emp_direccion, @emp_telefono) Go Se aprecia que al ser un procedimiento almacenado que utiliza una consulta INSERT INTO, los parmetros utilizados son todos los datos que deben ser ingresados a la base de datos, es decir, todos los atributos de la entidad Empresa. En el siguiente procedimiento almacenado se utiliza una consulta tipo UPDATE, por lo que sucede algo similar a la situacin del INSERT INTO, todos los atributos que quieren ser actualizados deben ser ingresados por el usuario y por consiguiente deben definirse como parmetros del procedimiento. Create Procedure "empresa_modifica" (@emp_rut varchar(13), @emp_nombre varchar(50), @emp_direccion varchar(100), @emp_telefono varchar(9)) as update empresa set emp_nombre = @emp_nombre, emp_direccion = @emp_direccion, emp_telefono = @emp_telefono where emp_rut = @emp_rut Go En el caso de un procedimiento almacenado de tipo DELETE, generalmente slo se ingresar un parmetro, el cual corresponde al atributo usado como referencia para la eliminacin. create procedure "empresa_elimina" @emp_rut varchar(13) as delete from empresa where emp_rut=@emp_rut go

Profesor Ayudante

Alex Ovalle Ramn Miranda N.

Pgina 6

Universidad de Talca Facultad de Ciencias Empresariales Contador Pblico Auditor


Los procedimientos almacenados de mayor complejidad son aquellos que involucran SELECT, ya que depende de cada situacin los parmetros que se utilizarn. Si se busca conseguir informacin de la base de datos referida a la fecha de las transacciones, un parmetro deber ser referido al ingreso de una fecha como referencia de seleccin. Dependiendo de que se quiera buscar y seleccionar, los parmetros debern ajustarse para cumplir con dicho objetivo. create procedure "carga_empresa_ayuda" @emp_nombre varchar (50) as select emp_rut, emp_nombre, emp_direccion, emp_telefono from empresa where emp_nombre like '%' + @emp_nombre + '%' go Como se aprecia en el procedimiento almacenado llamado carga_empresa_ayuda, lo que se buscar es obtener una referencia de texto sobre los nombres de las empresas ingresadas en la base de datos, por tanto en este caso especfico el nico parmetro requerido es el nombre o parte del mismo para ejecutar el procedimiento almacenado.

Profesor Ayudante

Alex Ovalle Ramn Miranda N.

Pgina 7