Professional Documents
Culture Documents
Y TRIGGERS
Bases de Datos
Ingeniera de Sistemas y Computacin
Universidad Nacional de Colombia
2007
Procedimientos almacenados
Sintaxis simplificada:
[exec | execute] procedure_name
Ejemplo:
execute proc_update_titles
Ejecutar el procedimiento:
exec proc_hello
Sintaxis simplificada:
create procedure procedure_name
(parameter_name datatype default_value
[, parameter_name datatype default_value...] )
as
statements
return
Los valores que se pasan no tienen el mismo tipo de datos que los
parmetros definidos
En la misma sentencia, se pasa un parmetro por posicin despus
de haber pasado un parmetro por nombre
Aunque no es recomendado, es posible mezclar los dos mtodos
para pasar valores, sin embargo, despus de pasar un valor a un
parmetro por nombre, todos los restantes de deben pasar por
nombre
Olvido de uno o ms parmetros
El olvido de uno o ms valores para los parmetros, hace que se
usen los valores por default
Los valores para los parmetros se pasan en un orden errado
Sintaxis simplificada:
create procedure procedure_name
(parameter_name datatype output
[, parameter_name datatype output...] )
as
statements
return
Sintaxis simplificada:
[exec | execute] procedure_name variable output
Los valores que retornan los parmetros se pasan automticamente
al conjunto respuesta
El retorno de valores se pueden pasar por nombre o por posicin
Se recomienda el paso por nombre
Values Meaning
Greater than 0 No predefined meaning; available
for user-detected errors
0 Successful completetion
-1 through 99 System-detected error
Less than 99 No predefined meaning; available
for user-detected erros
Sintaxis simplificada:
create proc procedure_name
as
statements
return [return_status]
Ejemplo:
create proc proc_datacheck
as
if (select max(total_sales) from titles) < 3000
begin
print "All the books have sold
less than 3000."
return 100
end
else
...
return 0
Ejemplo:
declare @status int
exec @status = proc_datacheck
if @status = 100
exec proc_max_under_3000
else
print "proc_datacheck was successful"
Sintaxis simplificada:
create trigger trigger_name
on table_name
for {insert | update | delete} [, {insert | update | delete} ...]
as
sql_statements
Sintaxis simplificada:
CREATE [OR REPLACE] TRIGGER <nombre_trigger>
{BEFORE|AFTER}
{DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]
[OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}
ON <nombre_tabla>
[FOR EACH ROW [WHEN (<condicin>)]]
DECLARE
-- variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepcion
END <nombre_trigger>;
Sintaxis simplificada:
drop trigger trigger_name
Ejemplo:
drop trigger trg_i_sales