You are on page 1of 3

Transact-SQL User's Guide (Spanish)

Page 1 of 3

Transact-SQL User's Guide (Spanish)

Definicin de procedimiento almacenado


Los procedimientos almacenados son grupos formados por instrucciones SQL y el lenguaje de
control de flujo. Cuando se ejecuta un procedimiento, se prepara un plan de ejecucin para que la
subsiguiente ejecucin sea muy rpida. Los procedimientos almacenados pueden:
z

Incluir parmetros

Llamar a otros procedimientos

Devolver un valor de estado a un procedimiento de llamada o lote para indicar el xito o el


fracaso del mismo y la razn de dicho fallo

Devolver valores de parmetros a un procedimiento de llamada o lote

Ejecutarse en SQL Server remotos

La posibilidad de escribir procedimientos almacenados mejora notablemente la potencia, eficacia y


flexibilidad de SQL. Los procedimientos compilados mejoran la ejecucin de las instrucciones y
lotes de SQL de forma dramtica. Adems, los procedimientos almacenados pueden ejecutarse en
otros SQL Server si el servidor del usuario y el remoto estn configurados para permitir logins
remotos. Escriba disparadores en su SQL Server local que ejecuten procedimientos en un servidor
remoto siempre que determinados eventos, como las eliminaciones, actualizaciones o inserciones,
tengan lugar a nivel local.
Los procedimientos almacenados se diferencian de las instrucciones SQL ordinarias y de los lotes de
instrucciones SQL en que estn precompilados. La primera vez que se ejecuta un procedimiento, el
procesador de consultas de SQL Serverlo analiza y prepara un plan de ejecucin que se almacena de
forma definitiva en una tabla del sistema . Posteriormente, el procedimiento se ejecuta segn el plan
almacenado. Puesto que ya se ha realizado la mayor parte del trabajo de procesamiento de consultas,
los procedimientos almacenados se ejecutan casi de forma instantnea.
SQL Server proporciona una gran variedad de procedimientos almacenados como herramientas
adecuadas para el usuario. Estos procedimientos almacenados se llaman procedimientos del sistema.
Los procedimientos almacenados se crean con create procedure . Para ejecutar un procedimiento
almacenado, ya sea un procedimiento del sistema o uno definido por el usuario, use el comando
execute . Tambin puede utilizar el nombre del procedimiento almacenado solo, siempre que sea la
primera palabra de una instruccin o lote.
Ejemplos de creacin y uso de procedimientos almacenados
La sintaxis para la creacin de un procedimiento almacenado sencillo, sin funciones especiales como
parmetros, es:
create procedure
procedure_name
as
SQL_statements

Los procedimientos almacenados son objetos de base de datos, y sus nombres deben ajustarse a las
reglas para identificadores.

http://manuals.sybase.com/onlinebooks/group-asarc/svs11001/tsqlsp/@Generic__Boo... 18/04/2010

Transact-SQL User's Guide (Spanish)

Page 2 of 3

Es posible incluir cualquier nmero y cualquier tipo de instruccin SQL, salvo las instrucciones
create . Consulte "Reglas asociadas a procedimientos almacenados". Un procedimiento puede ser
tan sencillo como una sola instruccin que enumere los nombres de todos los usuarios de una base de
datos:
create procedure namelist
as select name from sysusers

Para ejecutar un procedimiento almacenado, emplee la palabra clave execute y el nombre del
procedimiento almacenado, o simplemente especifique el nombre del procedimiento, siempre que se
enve a SQL Server solo o sea la primera instruccin de un lote. Puede ejecutar namelist de
cualquiera de las siguientes formas:
namelist
execute namelist
exec namelist

Para ejecutar un procedimiento almacenado en un SQL Server remoto, debe proporcionar el nombre
del servidor. La sintaxis completa de una llamada de procedimiento remoto es:
execute

server_name

.[

database_name

].[

owner

].

procedure_name

Los siguientes ejemplos ejecutan el procedimiento namelist en la base de datos pubs2 en el servidor
GATEWAY:
execute gateway.pubs2..namelist
gateway.pubs2.dbo.namelist
exec gateway...namelist

El ltimo ejemplo slo funciona si pubs 2 es la base de datos predeterminada del usuario.
El nombre de la base de datos es opcional slo si el procedimiento almacenado se encuentra en la
base de datos predeterminada del usuario. El nombre del propietario es opcional slo si el
propietario de la base de datos ( " dbo " ) es el propietario del procedimiento o si el usuario lo posee.
Lgicamente, es necesario tener permiso para ejecutar el procedimiento.
Un procedimiento puede incluir ms de una instruccin.
create
select
select
select

procedure showall as
count(*) from sysusers
count(*) from sysobjects
count(*) from syscolumns

Cuando se ejecuta el procedimiento, los resultados de cada comando se muestran en el orden en que
la instruccin aparece en el procedimiento.
showall
-----------5
(1 row affected)

http://manuals.sybase.com/onlinebooks/group-asarc/svs11001/tsqlsp/@Generic__Boo... 18/04/2010

Transact-SQL User's Guide (Spanish)

Page 3 of 3

-----------88
(1 row affected)
-----------349
(1 row affected, return status = 0)

Cuando el comando create procedure se ejecuta de forma correcta, el nombre del procedimiento se
almacena en sysobjects y su texto en syscomments .
Se puede mostrar el texto de un procedimiento con el procedimiento del sistema sp_helptext :
sp_helptext showall
# Lines of Text
--------------1
(1 row affected)
text
---------------------------------------create procedure showall as
select count(*) from sysusers
select count(*) from sysobjects
select count(*) from syscolumns
(1 row affected, return status = 0)

Procedimientos almacenados y permisos


Los procedimientos almacenados pueden servir de mecanismos de seguridad, ya que un usuario
puede recibir el permiso para ejecutar un procedimiento almacenado aunque no tenga permisos en
las tablas o vistas referenciadas en el mismo ni permiso para ejecutar comandos especficos. Para
obtener ms detalles, consulte la Gua del Usuario de las Caractersticas de Seguridad .
Procedimientos almacenados y rendimiento
Conforme cambia la base de datos, los planes de consulta originales utilizados para acceder a sus
tablas pueden volver a optimizarse recompilndolos con el procedimiento del sistema
sp_recompile . Esto evitar tener que buscar, omitir y volver a crear cada procedimiento almacenado
y disparador. El siguiente ejemplo marca cada procedimiento almacenado y disparador que accede a
la tabla titles para que se recompile la prxima vez que se ejecute.
sp_recompile titles

Para obtener informacin detallada sobre sp_recompile , consulte el Manual de Referencia de SQL
Server .

http://manuals.sybase.com/onlinebooks/group-asarc/svs11001/tsqlsp/@Generic__Boo... 18/04/2010

You might also like