You are on page 1of 3

Conceptos bsicos de los procedimientos almacenados

SQL Server 2008 R2 Otras versiones Los procedimientos almacenados de MicrosoftSQL Server son similares a los procedimientos de otros lenguajes de programacin en el sentido de que pueden:

Aceptar parmetros de entrada y devolver varios valores en forma de parmetros de salida al lote o al procedimiento que realiza la llamada. Contener instrucciones de programacin que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos. Devolver un valor de estado a un lote o a un procedimiento que realiza una llamada para indicar si la operacin se ha realizado correctamente o se han producido errores (y el motivo de stos).

Puede utilizar la instruccin EXECUTE de Transact-SQL para ejecutar un procedimiento almacenado. Los procedimientos almacenados difieren de las funciones en que no devuelven valores en lugar de sus nombres ni pueden utilizarse directamente en una expresin. Utilizar procedimientos almacenados en SQL Server en vez de programas Transact-SQL almacenados localmente en equipos cliente presenta las siguientes ventajas:

Se registran en el servidor. Pueden incluir atributos de seguridad (como permisos) y cadenas de propiedad; adems se les pueden asociar certificados. Los usuarios pueden disponer de permiso para ejecutar un procedimiento almacenado sin necesidad de contar con permisos directos en los objetos a los que se hace referencia en el procedimiento.

Mejoran la seguridad de la aplicacin. Los procedimientos almacenados con parmetros pueden ayudar a proteger la aplicacin ante ataques por inyeccin de cdigo SQL. Para obtener ms informacin, vea Inyeccin de cdigo SQL.

Permiten una programacin modular. Puede crear el procedimiento una vez y llamarlo desde el programa tantas veces como desee. As, puede mejorar el mantenimiento de la aplicacin y permitir que las aplicaciones tengan acceso a la base de datos de manera uniforme.

Constituyen cdigo con nombre que permite el enlace diferido. Esto proporciona un nivel de direccionamiento indirecto que facilita la evolucin del cdigo.

Pueden reducir el trfico de red.

Una operacin que necesite centenares de lneas de cdigo Transact-SQL puede realizarse mediante una sola instruccin que ejecute el cdigo en un procedimiento, en vez de enviar cientos de lneas de cdigo por la red. En MicrosoftSQL Server hay disponibles varios tipos de procedimientos almacenados. En este tema se describen de forma resumida los tipos de procedimientos almacenados y se incluyen ejemplos de cada uno de ellos.

Tipos de procedimientos almacenados


Procedimientos almacenados definidos por el usuario
Los procedimientos almacenados son mdulos o rutinas que encapsulan cdigo para su reutilizacin. Un procedimiento almacenado puede incluir parmetros de entrada, devolver resultados tabulares o escalares y mensajes para el cliente, invocar instrucciones de lenguaje de definicin de datos (DDL) e instrucciones de lenguaje de manipulacin de datos (DML), as como devolver parmetros de salida. En SQL Server 2008 existen dos tipos de procedimientos almacenados: Transact-SQL o CLR.

Transact-SQL
Un procedimiento almacenado Transact-SQL es una coleccin guardada de instrucciones Transact-SQL que puede tomar y devolver los parmetros proporcionados por el usuario. Por ejemplo, un procedimiento almacenado puede contener las instrucciones necesarias para insertar una nueva fila en una o ms tablas segn la informacin suministrada por la aplicacin cliente o es posible que el procedimiento almacenado devuelva datos de la base de datos a la aplicacin cliente. Por ejemplo, una aplicacin Web de comercio electrnico puede utilizar un procedimiento almacenado para devolver informacin acerca de determinados productos en funcin de los criterios de bsqueda especificados por el usuario en lnea.

CLR
Un procedimiento almacenado CLR es una referencia a un mtodo Common Language Runtime (CLR) de Microsoft.NET Framework que puede aceptar y devolver parmetros suministrados por el usuario. Se implementan como mtodos pblicos y estticos en una clase de un ensamblado de .NET Framework.Para obtener ms informacin, vea Procedimientos almacenados CLR (en ingls).

Procedimientos almacenados extendidos

Importante
Esta caracterstica se quitar en una versin futura de Microsoft SQL Server. Evite utilizar esta caracterstica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. En su lugar, utilice la integracin CLR.

Los procedimientos almacenados extendidos le permiten crear sus propias rutinas externas en un lenguaje de programacin como pueda ser C. Los procedimientos almacenados extendidos son DLL que una instancia de MicrosoftSQL Server puede cargar y ejecutar dinmicamente. Los procedimientos almacenados extendidos se ejecutan directamente en el espacio de direccin de una instancia de SQL Server y se programan con la API Procedimiento almacenado extendido de SQL Server.

Nota
La integracin CLR es una alternativa ms consolidada y segura para escribir procedimientos almacenados extendidos.

Procedimientos almacenados del sistema

Muchas de las actividades administrativas en SQL Server se realizan mediante un tipo especial de procedimiento conocido como procedimiento almacenado del sistema.Por ejemplo, sys.sp_changedbowner es un procedimiento almacenado del sistema. Los procedimientos almacenados del sistema se almacenan fsicamente en la base de datos Resource e incluyen el prefijo sp_. Los procedimientos almacenados del sistema aparecen de forma lgica en el esquema sys de cada base de datos definida por el usuario y el sistema. En SQL Server 2008, los permisos GRANT, DENY y REVOKE se pueden aplicar a los procedimientos almacenados del sistema.Para obtener una lista completa de los procedimientos almacenados del sistema, vea Procedimientos almacenados del sistema (Transact-SQL). SQL Server admite los procedimientos almacenados del sistema que proporcionan una interfaz desde SQL Server a los programas externos para varias actividades de mantenimiento. Estos procedimientos almacenados extendidos utilizan el prefijo xp_. Para obtener una lista completa de los procedimientos almacenados extendidos, vea Procedimientos almacenados extendidos generales (Transact-SQL).

You might also like