un usuario con permisos para modificar la tabla, se pueden ampliar los permisos para truncar la
tabla al usuario al que se concedan permisos EXECUTE para el mdulo.
Al llamar a un procedimiento a travs de la red, solo est visible la llamada que va a ejecutar el
procedimiento. Por lo tanto, los usuarios malintencionados no pueden ver los nombres de los
objetos de base de datos y tabla, incrustados en sus propias instrucciones Transact-SQL, ni
buscar datos crticos.
El uso de parmetros de procedimientos ayuda a protegerse contra ataques por inyeccin de
cdigo SQL. Dado que la entrada de parmetros se trata como un valor literal y no como cdigo
ejecutable, resulta ms difcil para un atacante insertar un comando en la instruccin TransactSQL del procedimiento y comprometer la seguridad.
Los procedimientos pueden cifrarse, lo que ayuda a ofuscar el cdigo fuente. Para obtener ms
informacin, vea Cifrado de SQL Server.
Reutilizacin del cdigo
El cdigo de cualquier operacin de base de datos redundante resulta un candidato perfecto para
la encapsulacin de procedimientos. De este modo, se elimina la necesidad de escribir de nuevo
el mismo cdigo, se reducen las inconsistencias de cdigo y se permite que cualquier usuario o
aplicacin que cuente con los permisos necesarios pueda acceder al cdigo y ejecutarlo.
Mantenimiento ms sencillo
Cuando las aplicaciones cliente llaman a procedimientos y mantienen las operaciones de base de
datos en la capa de datos, solo deben actualizarse los cambios de los procesos en la base de
datos subyacente. El nivel de aplicacin permanece independiente y no tiene que tener
conocimiento sobre los cambios realizados en los diseos, las relaciones o los procesos de la
base de datos.
Rendimiento mejorado
De forma predeterminada, un procedimiento se compila la primera vez que se ejecuta y crea un
plan de ejecucin que vuelve a usarse en posteriores ejecuciones. Como el procesador de
consultas no tiene que crear un nuevo plan, normalmente necesita menos tiempo para procesar
el procedimiento.
Si ha habido cambios importantes en las tablas o datos a los que se hace referencia en el
procedimiento, el plan pre compilado podra hacer que el procedimiento se ejecutara con mayor
lentitud. En este caso, volver a crear el procedimiento y forzar un nuevo plan de ejecucin
puede mejorar el rendimiento.
TIPOS DE PROCEDIMIENTOS ALMACENADOS
Definidos por el usuario:
Un procedimiento definido por el usuario 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 mtodo de
Common Runtime Language (CLR) de Microsoft .NET Framework.
Temporales
Los procedimientos 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 carcter de sus nombres un solo signo de nmero (#);
solo son visibles en la conexin actual del usuario y se eliminan cuando se cierra la conexin.
Los procedimientos temporales globales presentan dos signos de nmero (##) antes del nombre;
son visibles para cualquier usuario despus de su creacin y se eliminan al final de la ltima
sesin en la que se usa el procedimiento.
Sistema
Los procedimientos del sistema se incluyen con SQL Server. Estn almacenados fsicamente en
la base de datos interna y oculta Resource y se muestran de forma lgica en el esquema sys de
cada base de datos definida por el sistema y por el usuario. Adems, la base de
datos msdb tambin contiene procedimientos almacenados del sistema en el esquema dbo que
se usan para programar alertas y trabajos. Dado que los procedimientos del sistema empiezan
con el prefijo sp_, le recomendamos que no use este prefijo cuando asigne un nombre a los
procedimientos definidos por el usuario. Para obtener una lista completa de los procedimientos
del sistema, vea Procedimientos almacenados del sistema (Transact-SQL).
SQL Server admite los procedimientos del sistema que proporcionan una interfaz de SQL
Server a los programas externos para varias actividades de mantenimiento. Estos
procedimientos extendidos usan el prefijo xp_. Para obtener una lista completa de los
procedimientos extendidos, vea Procedimientos almacenados extendidos generales (TransactSQL).
Extendidos definidos por el usuario:
Los procedimientos extendidos permiten crear rutinas externas en un lenguaje de programacin
como C. Estos procedimientos son archivos DLL que una instancia de SQL Server puede cargar
y ejecutar dinmicamente
I.
Valor
Autor
Su nombre.
Create Date
La fecha de hoy.
Descripcin
Procedure_name
HumanResources.uspGetEmploye
esTest
@LastName
@Param1
@Datatype_For_Para
m1
Default_Value_For_Pa
ram1
@Param2
nvarchar(50)
@Datatype_For_Para
m2
Default_Value_For_Pa
ram2
nvarchar(50)
NULL
@FirstName
NULL
USE AdventureWorks2012;
GO
CREATE PROCEDURE HumanResources.uspGetEmployeesTest2
@LastName nvarchar(50),
@FirstName nvarchar(50)
AS
II.
III.
Antes de comenzar
Limitaciones y restricciones
La intercalacin de base de datos de llamada se usa al comparar los
nombres de los procedimientos del sistema. Por tanto, en las llamadas a
procedimientos use siempre el modelo exacto de maysculas y minsculas
de los nombres de procedimientos del sistema. Por ejemplo, este cdigo
generar un error si se ejecuta en el contexto de una base de datos que
tenga una intercalacin que distinga maysculas de minsculas:
Transact-SQL
EXEC SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help
O bien
Transact-SQL
EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50;
GO
AS
(Transact-
Permisos
Para obtener ms informacin, vea la seccin "Permisos" de EXECUTE
(Transact-SQL).
USAR SQL SERVER MANAGEMENT STUDIO
Para ejecutar un procedimiento almacenado
a) En el Explorador de objetos, conctese a una instancia de Motor de
base de datos de SQL Server, expndala y, a continuacin,
expanda Bases de datos.
b) Expanda la base de datos que desee, expanda Programacin y, a
continuacin, expanda Procedimientos almacenados.
c) Haga clic con el botn secundario en el procedimiento almacenado
definido por el usuario que desee y, a continuacin, haga clic
en Ejecutar procedimiento almacenado.
d) En el cuadro de dilogo Ejecutar procedimiento, especifique un
valor para cada parmetro y si debe pasar o no un valor NULL.
Parmetro:
Indica el nombre del parmetro.
Tipo de datos:
Indica el tipo de datos del parmetro.
Parmetro de salida:
Indica si se trata de un parmetro de salida.
Para establecer o
automticamente
borrar
un
procedimiento
para
que
se
ejecute
Transact-SQL
USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionName = ] 'startup'
, @OptionValue = 'on';
USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionValue = 'off';