Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Es un grupo de una o varias instrucciones Transact-SQL o una referencia a un método de Common Runtime
Language (CLR) de Microsoft .NET Framework. Los procedimientos se asemejan a las construcciones de otros
lenguajes de programación, porque pueden:
Aceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al programa que
realiza la llamada.
Contener instrucciones de programación que realicen operaciones en la base de datos. Entre otras, pueden
contener llamadas a otros procedimientos.
Devolver un valor de estado a un programa que realiza una llamada para indicar si la operación se ha realizado
correctamente o se han producido errores, y el motivo de estos.
Se puede crear en una base de datos definida por el usuario o en todas las bases de datos del sistema excepto en la base
de datos Resource. El procedimiento se puede desarrollar en Transact-SQL o como una referencia a un método de
Common Runtime Language (CLR).
Temporales
Son una forma de procedimientos definidos por el usuario. Los procedimientos temporales son iguales que los
procedimientos permanentes salvo porque se almacenan en tempdb. Hay dos tipos de procedimientos temporales:
locales y globales. Se diferencian entre sí por los nombres, la visibilidad y la disponibilidad. Los procedimientos temporales
locales tienen como primer carácter de sus nombres un solo signo de número (#); solo son visibles en la conexión actual
del usuario y se eliminan cuando se cierra la conexión. Los procedimientos temporales globales presentan dos signos de
número (##) antes del nombre; son visibles para cualquier usuario después de su creación y se eliminan al final de la última
sesión en la que se usa el procedimiento.
Sistema
Se incluyen con SQL Server. Están almacenados físicamente en la base de datos interna y oculta Resource y se muestran
de forma lógica en el esquema sys de cada base de datos definida por el sistema y por el usuario. La base de datos msdb
también contiene procedimientos almacenados del sistema en el esquema dbo que se usan para programar alertas y
trabajos.
Le permiten crear sus propias rutinas externas en un lenguaje de programación como puede ser C. estos procedimientos
son DLL que una instancia de SQL Server puede cargar y ejecutar dinámicas.
! Nota
Los procedimientos almacenados extendidos se quitarán en una versión futura de SQL Server. No utilice esta
característica en nuevos trabajos de desarrollo y modifique lo antes posible las aplicaciones que actualmente la utiliza.
Cree en su lugar procedimientos CLR. Este método constituye una alternativa más consolidada y segura para escribir
procedimientos extendidos.
1. DELIMITER //
2. CREATE PROCEDURE nombre_procedimiento
3. BEGIN
4. /*CODIGO EN SQL A EJECUTAR*/
5. END //
Si el procedimiento incluyera parámetros los pondríamos después del nombre y entre paréntesis. Como en cualquier
lenguaje de programación.
1. DELIMITER //
2. CREATE PROCEDURE nombre_procedimiento(TIPOPARAMETRO parametro1 TIPOVALR,…)
3. BEGIN
4. /*CODIGO EN SQL A EJECUTAR*/
5. END //
Ejemplo de procedimiento
almacenado sencillo
CALL total_paises();
STORED PROCEDURE
con parámetros de
entrada IN
1. DELIMITER //
2. CREATE PROCEDURE total_paises_nombrados_como
3. (IN apalabra CHAR(20))
4. BEGIN
5. SELECT COUNT(*) FROM pais
6. WHERE nombre LIKE palabra;
7. END //
Este “stored procedure” es una rutina SQL que permite calcular el total de países en una tabla pais que contienen con
una “palabra” pasada como parámetro de entrada. Hay que tener en cuenta que la palabra solo puede tener como máximo
20 caracteres ya que el parámetro de entrada “palabra” está definido como CHAR(20).
Para llamar a este método hay que recordar siempre pasar un texto como parámetro de entrada, sino se producirá un
error:
1. CALL total_paises_nombrados_como(‘españa’);
/*
DELIMITER //
CREATE PROCEDURE total_paises
(OUT total INTEGER)
BEGIN
SELECT COUNT (*) INTO total FROM
pais;
END //
Este procedimiento calcula el total de registros de la tabla pais y los inserta con INTO en la variable de salida OUT.
Para llamar al procedimiento SQL y visualizar el contenido de la variable deberé de crear primero una variable, y
después pasársela como parámetro al procedimiento:
1. SET @total = 0;
2. CALL total_paises(@total);
3. SELECT @total;