procedimientos almacenados
TRANSCRIPT
Procedimientos Almacenados
PROCEDIMIENTOS ALMACENADOS
CREATE PROCEDURE nombreProcedimiento [@parametro1 tipoDato [=valordefecto]][,....] AS SENTENCIAS…..
forma de llamarlo
[exec] nombreprocedimiento [valorParametro1][,valor paremtro2...] nombreprocedimeinto @nombreParametro2=valor <= para asignar un valor a un parámetro sin utilizar el orden. Exec nombre_procedminto WITH RECOMPILE
Sp_helptext [nombre procedimiento] <= ver los procedimientos o contenido que hay.
DROP PROCEDURE nombreProcemiento
Sp_makestartup nombreProcedmiento <=Para que se ejectura cuando se arranque el sqlServerSp_helpstartup <= indica los que hay Sp_unmakestartup nombreProcedmiento <= no es autoarracable.
Procedimientos Almacenados
Para saber si un parametro se ha puesto ...
CREATE PROCEDURE procedmiento @p1 int = NULL Y después preguntar
If @p1 IS NULL...
Parametros de salida:
Create procedure procemidneot @p1 int OUTPUT
Para recoger el valor >>> exec procemiento @variable OUTPUT
Ejemplo :
CREATE PROCEDURE UNO AS DECLARE @A INT SELECT @A=1 SELECT @A EXEC DOS @A OUTPUT SELECT @A
CREATE PROCEDURE DOS @P1 INT OUTPUT AS SELECT @P1 = 2
Procedimientos Almacenados
--------------------- SENTENCIAS
DECLARE @nombreVarialbe tipoDeDatos
Para asignarle el valor => SELECT @variable = {Valor / sentencia select que de un valor unico }Tambien se puede poner SET @VARIABLE = valor
Si se pone select @variable = select campo from … Solo nos coge el primer valor de la columna
IF expresiónLogica (valen los exists de sql) 1sola sentencia[else] [if expresión 1sola sentencia]
1Sola Sentencia se puede utilizar BEGIN .... END
WHILE ExpresionLogica 1Sola sentencia
BREAKCONTINUE
PRINT SOLO TEXTOS char o varchar, SI se puede concadenar textos en el print
PRINT ‘Texto’
PRINT @VARIABLE_LOCALPRINT @@VARIABLE GLOBAL (PAGINA 371)
GOTO ETIQUETAETIQUETA:
Procedimientos Almacenados
RETURN [numero]Numero=0 => OK
Para recoger este numero Exec @valorvariable=nombreProcedimiento.
RETURN NumeroEstado Por defecto 0 = OK
-1 .. –99 = Errores del SqlPara nosotros utilizaríamos >0 o menores que –99
En la llamada exec @VARIABLE = ProcedimientoLLAMADOqueTIeneReturn
RAISERROR NumeroError “texto error”
RAISERROR ( NumeroError, gravedad,estado) RAISERROR ( ‘HOLA QUE TAL’,1,127) 127 = Error de parar lote batch
NumeroError pasa a ser el valor de @@ERROR Numero de error entre 50,000 a 2,147,4783,647
O bien poner Sp_addmessage NºMensaje, gravedad, “texto” {true/False} [,REPLACE] True/False = Si va al registro de sucesos de windows NT.
Gravedad = 1 .. 25 , Usar de 11 a 16, de 18 a 25 no permiten ejectuar mas instrucciones del procedimiento, solo para el administrador
Y utilizar raiserror (numeroError,Gravedad,Estado) O bien raiserror(“texto”, gravedad,estado)
Sp_dropmessage numerodeMensaje
Para ver que mensajes definidos Select * from master.dbo.sysmessages
Procedimientos Almacenados
WAITFOR
Waitfor {DELAY ‘hora’ / TIME ‘hora’ / ERROREXIT / PROCESSEXIT / MIRROREXIT } SENTENCIA
Delay = tiempo a esperar ’15:10:10’ ‘horas:minutos:segundos’Time= hasta esa horaERROREXIT= Hasta que falle lo que sigueMIRROREXIT = Hasta que falle un dispositivo de duplicado.
TABLAS TEMPORALES:
CREATE TABLE #PEPE
Se destruye cuando acaba el proceso.
También select …. into #pepe From ….Nos crea una tabla con los campos del select.
Ejercicios
1.- Alumnos del 811NMA con nota media mayor que la nota media de ese grupo2.- Alumnos con nota media mayor a la nota media del grupo pasado como parametro3.- Relacion de alumnos de un grupo dado (por parámetro)4.- Boletín de notas de un alumno . Se pasa como parámetro el numero de expediente5.- Boletín de notas de un alumno. Se pasa como parámetro apellidos y nombre del alumno6.- Relación de alumnos con nota media entre dos valores dados que se pasan como parámetros.7.- Relación de alumnos con mejor y peor nota media del centro..(TABLAS TEMPORALES)8.- Relación de alumnos de un grupo que se pasa como parámetro cuya nota media es mayor que la nota media de ese grupo.9.- Número de alumnos de un grupo que tienen mas de 3 asignaturas suspendidas. El grupo se pasa como parámetro. 10.- Lo mismo que el 9 pero el valor debe ser devuelto al programa que llama el procedimiento.11.- Procedimiento almacenado al que le pasamos el código de un alumno y nos devuelve la nota media.12. Procedimiento almacenado al que pasamos el código de un grupo y nos devuelve la nota media de ese grupo (media de todas las notas de los alumnos de ese grupo)