Professional Documents
Culture Documents
Transact-SQL
Se registran en el servidor.
Pueden incluir atributos de seguridad (como permisos) y cadenas de
propiedad; adems 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.
USE database_name
Puede crear otros objetos de base de datos dentro de un procedimiento
almacenado. Puede hacer referencia a un objeto creado en el mismo
procedimiento almacenado, siempre que se haya creado antes de hacer
referencia a l.
Puede hacer referencia a tablas temporales dentro de un procedimiento
almacenado.
Si crea una tabla temporal local dentro de un procedimiento almacenado,
sta existir nicamente para los fines del procedimiento y desaparecer
cuando ste finalice.
Si ejecuta un procedimiento almacenado que llama a otro procedimiento
almacenado, este ltimo puede tener acceso a todos los objetos creados por
el primero, incluidas las tablas temporales.
Si ejecuta un procedimiento almacenado remoto que realiza cambios en una
instancia remota de MicrosoftSQL Server, los cambios no se pueden revertir.
Los procedimientos almacenados remotos no intervienen en las
transacciones.
El nmero mximo de parmetros en un procedimiento almacenado es de
2100.
El nmero mximo de variables locales en un procedimiento almacenado
est limitado nicamente por la memoria disponible.
En funcin de la memoria disponible, el tamao mximo de un
procedimiento almacenado es de 128 megabytes (MB).
Sintaxis
Transact-SQL
--Transact-SQL Stored Procedure Syntax
CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ;number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH <procedure_option> [ ,...n ] ]
[ FOR REPLICATION ]
AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
[;]
<procedure_option> ::=
[ ENCRYPTION ]
[ RECOMPILE ]
[ EXECUTE AS Clause ]
Transact-SQL
--CLR Stored Procedure Syntax
CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ;number ]
[ { @parameter [ type_schema_name. ] data_type }
[ = default ] [ OUT | OUTPUT ] [READONLY]
] [ ,...n ]
[ WITH EXECUTE AS Clause ]
AS { EXTERNAL NAME assembly_name.class_name.method_name }
[;]
Argumentos
schema_name
procedure_name
Evite el uso del prefijo sp_ cuando asigne nombre a los procedimientos. SQL
Server usa este prefijo para designar los procedimientos del sistema. Si usa
el prefijo, puede provoca la ruptura del cdigo de la aplicacin si existe un
procedimiento del sistema con el mismo nombre.
; number
Entero opcional que se usa para agrupar procedimientos con el mismo
nombre. Estos procedimientos agrupados se pueden quitar juntos
mediante una instruccin DROP PROCEDURE.
@ parameter
[ type_schema_name. ] data_type
VARYING
default
OUT | OUTPUT
READONLY
RECOMPILE
Para indicar a Motor de base de datos que descarte planes de consulta para
consultas individuales en un procedimiento, use la sugerencia de consulta
RECOMPILE en la definicin de la consulta. Para obtener ms informacin,
vea Sugerencias de consulta (Transact-SQL).
ENCRYPTION
EXECUTE AS
FOR REPLICATION
Parmetros
@ retval
Es un valor devuelto.
@ param1
Es un parmetro de entrada.
@ param2
Es un parmetro de entrada/salida.
Trigger DML.
AS
BEGIN
END
La primera tabla (inserted) solo est disponible en las operaciones INSERT y
UPDATE y en ella estn los valores resultantes despus de la insercin o
actualizacin. Es decir, los datos insertados. Inserted estar vaca en una
operacin DELETE.
Trigger DDL
ON DATABASE
AS
BEGIN
...
END
- Solo se pueden aplicar a una tabla especfica, es decir, un trigger no sirve para
dos o ms tablas
- El trigger se crea en la base de datos que de trabajo pero desde un trigger
puedes hacer referencia a otras bases de datos.
- Un Trigger devuelve resultados al programa que lo desencadena de la misma
forma que un Stored Procedure aunque no es lo ms idneo, para impedir que una
instruccin de asignacin devuelva un resultado se puede utilizar la sentencia SET
NOCOUNT al principio del Trigger.
- Las siguientes instrucciones no se pueden utilizar en los triggers :
ALTER DATABASE CREATE DATABASE
DISK INIT DISK RESIZE
DROP DATABASE LOAD DATABASE
LOAD LOG RECONFIGURE
RESTORE DATABASE RESTORE LOG