El mayor artista es aquel que en la suma de sus obras ha incorporado el mayor número de sus mejores ideas. ( John Ruskin - 1819-1900. Crítico y escritor británico.)
Publicado el Miércoles 23 de agosto de 2006 a las 16:27:00 por ktommy
Lecturas
Procedimientosalmacenados
Losprocedimientos almacenados son una de las herramientas más potentes yversátiles de los manejadores de SQL y, utilizándolos adecuadamente, una buenamanera de aprovechar al máximo las posibilidades de éste SGBD y obtener un rendimientoóptimo en nuestras aplicaciones cliente-servidor.
Unprocedimiento almacenado es un pequeño programa almacenado en la base de datosque puede ser ejecutado en cualquier momento. Los procedimientos almacenados,al igual que los disparadores, utilizan un lenguaje propietario ya que elestándar SQL ANSI 92 no Especifica nada acerca de ellos. Generalmente extiendenel lenguaje SQL con sentencias de Control de flujo como if...then ysentencias para proveer funcionalidades adicionales.
La mejordefinición de procedimiento almacenado que he encontrado es un conjunto deinstrucciones escritas en lenguaje Transact-SQL (T-SQL) compiladas y ejecutadasdentro de una base de datos relacional.
Losprocedimientos almacenados son un conjunto precompilado de instruccionesTransact-SQL (*) almacenadas bajo un solo nombre y procesadas como una unidad.Los procedimientos almacenados pueden recibir parámetros -en base a los cualesrealizar distintas acciones- y devolver datos de varias formas distintas(principalmente como parámetros de salida y como conjuntos de resultados o Recordsets).
Transact-SQL es el lenguaje de base de datosutilizado por SQL Server y por las instrucciones enviadas desde lasaplicaciones que se comuniquen con SQL Server. Transact-SQL cumple el nivelbásico del estándar SQL-92 y lo amplía con funciones propias destinadas almanejo de características específicas de SQL Server.
¿Para qué utilizar procedimientosalmacenados?
Losprocedimientos almacenados ESTÁN compilados. Traducción básica: El conjunto deinstrucciones que utiliza el equipo para llevar a cabo la operación solicitadase divide hasta el menor nivel posible disponible en la plataforma en la queestá trabajando. (Punto crucial: la velocidad.) La alternativa sería crearconsultas y tareas de mantenimiento de bases de datos que se ejecutaran cadavez que se enviara la petición, lo que exigiría de su SQL Server mucho mástrabajo del necesario.
Hay otrasmuchas ventajas por utilizar y crear procedimientos almacenados, como lacapacidad de administrar de manera centralizada las tareas reutilizables.
Rendimiento: al ser ejecutados por el motor debase de datos ofrecen un
Rendimientoinmejorable ya que no es necesario transportar datos a ninguna parte. Cualquierproceso externo tiene una penalidad de tiempo adicional dada por el transportede datos. Los procedimientos almacenados son analizados y optimizados en elmomento de su creación, a diferencia de las instrucciones Transact-SQL, quedeben ser analizadas, compiladas y optimizadas cada vez que son enviadas por elcliente. Además, el motor de SQL Server es capaz de reutilizar el plan deejecución del procedimiento almacenado que se encuentra en la memoria (caché deprocedimientos) después de haberse ejecutado una primera vez.
Potencia: el lenguaje para procedimientosalmacenados es muy potente. Permiten
Ejecutaroperaciones complejas en pocos pasos ya que poseen un conjunto de
Instruccionesavanzadas.
Centralización: al formar parte de la base de datoslos procedimientos almacenados están en un lugar centralizado y pueden serejecutados por cualquier aplicación que tenga acceso a la misma. Si undeterminado proceso es desarrollo con una aplicación como Delphi, es posibleque no esté disponible en todos los lugares que se lo necesite, por ejemplo, elsistema operativo unix. Los procedimientos almacenados están siempredisponibles.
Reducción del tráfico de red Una sentencia formada por decenas, cientos o incluso miles de líneas de códigoTransact-SQL puede escribirse como un procedimiento almacenado en el servidor yejecutarse simplemente mediante el nombre de dicho procedimiento, en lugar deenviar todas las líneas de código por la red desde el cliente hasta el servidor(ésta reducción del tráfico de red será especialmente significativa en redes nomuy veloces, como por ejemplo, algunas redes WAN).
Seguridad Los procedimientos almacenados facilitan algunas tareas de administración deseguridad y asignación de permisos. Por ejemplo, se puede conceder permiso a unusuario para ejecutar un determinado procedimiento almacenado, aunque elusuario no disponga de los permisos necesarios sobre los objetos afectados porlas acciones individuales de dicho procedimiento.
Encapsulación Los procedimientos almacenados encapsulan gran parte de la lógica de los datosa las aplicaciones que los utilizan. Por ejemplo, una aplicación puede llamaral procedimiento almacenado spEliminarProveedor sin conocer cómo funciona internamenteéste proceso (transacciones e instrucciones Transact-SQL utilizadas, tablasafectadas, etc.)
Perotambién ofrecen una desventaja importante:
Esclavitud: los procedimientos almacenados nosesclavizan al motor de base de
datos.Una base de datos con muchos procedimientos almacenados es prácticamente imposiblede migrar a otro motor. Esto se debe, principalmente, a que los lenguajes deprocedimientos almacenados de distintos fabricantes no son compatibles entresí. Teniendo en cuenta las ventajas y desventajas es aconsejable no abusar delos procedimientos almacenados y utilizarlos sólo cuando no queda otraalternativa.
Otros
Reemplazando o ampliandola funcionalidad de extensos y complejos procedimientos almacenados,especialmente los que realizan cálculos matemáticos complejos o fórmulas denegocio complejas.
Procedimientos quenecesitan acceder a algunas estructuras de datos externas que no tienen unainterface tradicional de acceso a datos.
Realizar algoritmoscomplejos. Por ejemplo algoritmos geográficos de mapeo.
el trabajo me ha parecido muy bueno. la informacion estan en forma clara y precisa pero debo remarcar que muchas palabras estan sin espacio algo asi: holasoygonzalo. me ha costado mucho mas leer que entender el tema pero igual lo hice. igual me ha gustado.
deberas comprender que el contenido por si solo no hace mucho por mas bueno que sea o como este redactado. algo de post-edicion estaria bueno
Me parece mas bien que el tema de desventajas a sido tratado muy ligeramente. Existen cientos de articulos sobre el uso de procedimientos almacenados para desarrollar logica de negocio. Casi su totalidad coinciden en que el uso de estos procedimientos debe limitarse a tareas sencillas sobre la BD y no al desarrollo de complejas operaciones.
Mira un procedimiento almacenado se hace de la siguiente manera, supongamos que tienes una base de datos que se llama sistemas, en esa base de datos tienes una tabla que se llama usuarios, y sus campos son Id_Usuario es de tipo Varchar y longitud de (20) Id_psw es de tipo varchar y longitud de (20) bueno con el siguiente procedimiento almacenado seleccionare un registro mediante su Id_ Usuario primero crear el procedimiento: create procedure Seleccionar //seleccionar es el nombre del procedimiento ( @Id varchar (20) //@id es una variable que se utilizara para ejecutar el procedimiento ) as begin // instruccion que indica que el proceso inicia la suiguiente instruccion select* from usuarios where id_user=@id_user // instruccion sql comun y corriente retur //regresa la operacion end // finaliza el procedimiento ahora ejecutaremos el proceso suponiendo que yo en mi tabla tengo el registro: Id_usuario id_psw Fmedina 123456 y quiero seleccionarlo con el procedimiento hago lo siguiente: exec proc seleccionar @id = fmedina pulso F5 y listo bueno ahi va el procedimiento create procedure seleccionar ( @Id varchar (20) ) as begin select* from usuarios where id_user=@id return end ejecutar procedimiento exec proc seleccionar @id=Fmedina y listo espero y les sirva de algo inamoto202@hotmail.com
Me parece muy buena la informacion escrita en esta pagina, sin embargo me parece que le hacen falta algunos ejemplos y explicacion de los distintos tipos en los que se dividen los procedimientos almacenados.