procedimientos almacenados

5
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 sqlServer Sp_helpstartup <= indica los que hay Sp_unmakestartup nombreProcedmiento <= no es autoarracable.

Upload: sam-paredes-chaves

Post on 26-Jan-2017

87 views

Category:

Education


0 download

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)