3
Conceptos básicos de los procedimientos almacenados Los procedimientos almacenados de MicrosoftSQL Server son similares a los procedimientos de otros lenguajes de programación en el sentido de que pueden: Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al lote o al procedimiento que realiza la llamada. Contener instrucciones de programación 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 operación se ha realizado correctamente o se han producido errores (y el motivo de éstos). Puede utilizar la instrucción 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 expresión. 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; además 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 aplicación. Los procedimientos almacenados con parámetros pueden ayudar a proteger la aplicación ante ataques por inyección de código SQL. Para obtener más información, vea Inyección de código SQL. Permiten una programación modular. Puede crear el procedimiento una vez y llamarlo desde el programa tantas veces como desee. Así, puede mejorar el mantenimiento de la aplicación y permitir que las aplicaciones tengan acceso a la base de datos de manera uniforme. Constituyen código con nombre que permite el enlace diferido. Esto proporciona un nivel de direccionamiento indirecto que facilita la evolución del código. Pueden reducir el tráfico de red. Una operación que necesite centenares de líneas de código Transact-SQL puede realizarse mediante una sola instrucción que ejecute el código en un procedimiento, en vez de enviar cientos de líneas de código por la red.

Conceptos Básicos de Los Procedimientos Almacenados

Embed Size (px)

DESCRIPTION

Procedimientos Almacenados: Conceptos Básicos

Citation preview

Page 1: Conceptos Básicos de Los Procedimientos Almacenados

Conceptos básicos de los procedimientos almacenados

Los procedimientos almacenados de MicrosoftSQL Server son similares a los procedimientos de otros lenguajes de programación en el sentido de que pueden:

Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al lote o al procedimiento que realiza la llamada.

Contener instrucciones de programación 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 operación se ha realizado correctamente o se han producido errores (y el motivo de éstos).

Puede utilizar la instrucción 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 expresión.

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; además 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 aplicación.

Los procedimientos almacenados con parámetros pueden ayudar a proteger la aplicación ante ataques por inyección de código SQL. Para obtener más información, vea Inyección de código SQL.

Permiten una programación modular.

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

Constituyen código con nombre que permite el enlace diferido.

Esto proporciona un nivel de direccionamiento indirecto que facilita la evolución del código.

Pueden reducir el tráfico de red.

Una operación que necesite centenares de líneas de código Transact-SQL puede realizarse mediante una sola instrucción que ejecute el código en un procedimiento, en vez de enviar cientos de líneas de código por la red.

Page 2: Conceptos Básicos de Los Procedimientos Almacenados

Tipos de procedimientos almacenados

En Microsoft SQL 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.

Procedimientos almacenados definidos por el usuario

Los procedimientos almacenados son módulos o rutinas que encapsulan código para su reutilización. Un procedimiento almacenado puede incluir parámetros de entrada, devolver resultados tabulares o escalares y mensajes para el cliente, invocar instrucciones de lenguaje de definición de datos (DDL) e instrucciones de lenguaje de manipulación de datos (DML), así como devolver parámetros 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 colección guardada de instrucciones Transact-SQL que puede tomar y devolver los parámetros proporcionados por el usuario. Por ejemplo, un procedimiento almacenado puede contener las instrucciones necesarias para insertar una nueva fila en una o más tablas según la información suministrada por la aplicación cliente o es posible que el procedimiento almacenado devuelva datos de la base de datos a la aplicación cliente. Por ejemplo, una aplicación Web de comercio electrónico puede utilizar un procedimiento almacenado para devolver información acerca de determinados productos en función de los criterios de búsqueda especificados por el usuario en línea.

CLR

Un procedimiento almacenado CLR es una referencia a un método Common Language Runtime (CLR) de Microsoft.NET Framework que puede aceptar y devolver parámetros suministrados por el usuario. Se implementan como métodos públicos y estáticos en una clase de un ensamblado de .NET Framework.Para obtener más información, vea Procedimientos almacenados CLR (en inglés).

Procedimientos almacenados extendidos

Importante

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta

característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que

actualmente la utilizan. En su lugar, utilice la integración CLR.

Page 3: Conceptos Básicos de Los Procedimientos Almacenados

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

Nota

La integración CLR es una alternativa más 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 físicamente en la base de datos Resource e incluyen el prefijo sp_. Los procedimientos almacenados del sistema aparecen de forma lógica 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).