Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DefinicionPA PDF
DefinicionPA PDF
Transact-SQL
Se registran en el servidor.
Pueden incluir atributos de seguridad (como permisos) y cadenas de
propiedad; además 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 número máximo de parámetros en un procedimiento almacenado es de
2100.
El número máximo de variables locales en un procedimiento almacenado
está limitado únicamente por la memoria disponible.
En función de la memoria disponible, el tamaño máximo 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 código de la aplicación 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 instrucción 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 definición de la consulta. Para obtener más información,
vea Sugerencias de consulta (Transact-SQL).
ENCRYPTION
EXECUTE AS
FOR REPLICATION
Parámetros
@ retval
Es un valor devuelto.
@ param1
Es un parámetro de entrada.
@ param2
Es un parámetro de entrada/salida.
Trigger DML.
AS
BEGIN
END
La primera tabla (inserted) solo está disponible en las operaciones INSERT y
UPDATE y en ella están los valores resultantes después de la inserción o
actualización. Es decir, los datos insertados. Inserted estará vacía en una
operación DELETE.
Trigger DDL
ON DATABASE
AS
BEGIN
...
END
- Solo se pueden aplicar a una tabla específica, es decir, un trigger no sirve para
dos o más 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 más idóneo, para impedir que una
instrucción de asignación 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