2. DEFINICIÓN:
Procedimiento Almacenado o Store Procedures (En inglés)
son unidades de código compuestas por una o más
sentencias Transact-SQL o T-SQL y que son almacenados en
el servidor. SPs nos dan la habilidad de extender el
lenguaje T-SQL gracias a que podemos añadir nuestras
propias subrutinas y procedimientos para las bases de
datos SQL SERVER. Veamos la sintaxis.
Los procedimientos almacenados en SQL Server son otras
de las poderosas rutinas de T-SQL. Consisten en un solo
batch de código que puede ser llamado desde otro código
T-SQL mediante el comando EXECUTE. Estas rutinas T-SQL
pueden recibir datos en sus parámetros de entrada y
enviar nueva información a través de los parámetros de
salida.
3. Ventajas:
La ventaja de un procedimiento almacenado, en
respuesta a una petición de usuario, está directamente
bajo el control del motor del gestor de bases de datos,
que corre generalmente en un servidor distinto del
servidor web, aumentando con ello la rapidez de
procesamiento de las peticiones del usuario. El servidor
de la base de datos tiene acceso directo a los datos
necesarios para manipular y sólo necesita enviar el
resultado final al usuario.
5. Crear un procedimiento almacenado.
Cómo se crea un procedimiento almacenado de Transact-SQL mediante SQL Server Management
Studio y la instrucción CREATE PROCEDURE de Transact-SQL.
Para crear un procedimiento en el Editor de consultas
1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
2. En el menú Archivo, haga clic en Nueva consulta.
3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. En este
ejemplo se crea el mismo procedimiento almacenado que antes con otro nombre diferente.
USE AdventureWorks2012;
GO
CREATE PROCEDURE HumanResources.uspGetEmployeesTest2
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS
SET NOCOUNT ON;
SELECT FirstName, LastName, Department
FROM HumanResources.vEmployeeDepartmentHistory
WHERE FirstName = @FirstName AND LastName = @LastName
AND EndDate IS NULL;
GO
6. 4. Para ejecutar el procedimiento, copie y pegue el
ejemplo siguiente en una nueva ventana de
consulta y haga clic en Ejecutar. Observe que se
muestran diferentes métodos para especificar los
valores de parámetro.
EXECUTE HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar';
-- Or
EXEC HumanResources.uspGetEmployeesTest2 @LastName = N'Ackerman', @
FirstName = N'Pilar';
GO
-- Or
EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar',
@LastName = N'Ackerman';
GO
7. Modificar un procedimiento almacenado.
1. En el Explorador de objetos, conéctese a una instancia de Motor de base de datos y
expándala.
2. Expanda Bases de datos, expanda la base de datos a la que pertenece el
procedimiento y, a continuación, expanda Programación.
3. Expanda Procedimientos almacenados, haga clic con el botón secundario en el
procedimiento que desea modificar y, a continuación, haga clic en Modificar.
4. Modifique el texto del procedimiento almacenado.
5. Para probar la sintaxis, en el menú Consulta, haga clic en Analizar.
6. Para guardar las modificaciones en la definición de procedimiento, en el menú Consulta,
haga clic en Ejecutar.
7. Para guardar la definición de procedimiento actualizada como un script de Transact-
SQL, en el menú Archivo, haga clic en Guardar como. Acepte el nombre de archivo o
reemplácelo por un nombre nuevo y, a continuación, haga clic en Guardar.
8. Eliminación de un procedimiento almacenado.
1. En el Explorador de objetos, conéctese a una instancia del Motor de base de
datos y expándala.
2. Expanda Bases de datos, expanda la base de datos a la que pertenece el
procedimiento o bien, en la barra de herramientas, seleccione la base de datos
en la lista de bases de datos disponibles.
3. En el menú Archivo, haga clic en Nueva consulta.
4. Obtenga el nombre del procedimiento almacenado para quitar en la base de
datos actual. En el Explorador de objetos, expanda Programación y, a
continuación, Procedimientos almacenados. Como alternativa, en el editor de
consultas, ejecute la siguiente instrucción.
SELECT name AS procedure_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.procedures;
9. 5. Copie y pegue el ejemplo siguiente en el editor de
consultas e inserte un procedimiento almacenado para
eliminarlo de la base de datos actual.
DROP PROCEDURE <stored procedure name>;
GO
6. Quite las referencias al procedimiento de cualquier objeto y script dependientes.
10. Ejemplo:
• CREATE PROCEDURE Dice_Hola
AS
PRINT ‘Hola’;
GO
• CREATE PROCEDURE Dice_Palabra
@palabra CHAR(30)
AS
PRINT @palabra;
GO
• CREATE PROCEDURE VerUsuariosPoblacion
@pob CHAR(30),
@pro CHAR(30)
AS
SELECT * FROM usuarios WHERE poblacion=@pob AND provincia = @pro;
GO