Вы находитесь на странице: 1из 18

Transacciones Pgina 1

TEMA:

Transacciones

ASIGNATURA: Base de Datos


SEMESTRE : 2014-I

DOCENTE: Ing. Victor Manuel Nieves Pinchi.



INTEGRANTES:

Callao Lpez Juan Erick.
Lizana Oliva Royser
Mendoza Amasifuen Carolina.
Prez Ylatoma Leydy Mardelit.
Rafael Saldaa Alicia.
Jauregui Guerra Ridger Remberto
Bocanegra Delgado S amuel

TARAPOTO PER
2013




UNIVERSIDAD NACIONAL DE SAN MARTIN
FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA
Transacciones Pgina 2







INDICE
Introduccin .................................................................................................. 3
Definicion .......................................................................................................... 4
Sintaxis ............................................................................................................. 4
Estructuras de control ....................................................................................... 4
Operadores........................................................................................................ 6
Tipos de datos ................................................................................................... 7
Caracteristicas .................................................................................................. 9
Caracteristicas especificas ................................................................................. 9
Caractersticas de los sistemas de procesamiento de transacciones (TSP) ........... 10
Propiedades ..................................................................................................... 10
Estados ........................................................................................................... 11
Declaraciones ................................................................................................... 11
Eejemplos de transacciones: ............................................................................. 13







Transacciones Pgina 3





INTRODUCCION:



SQL es un lenguaje de consulta para los sistemas de bases de datos relacinales, pero
que no posee la potencia de los lenguajes de programacin. No permite el uso de
variables, estructuras de control de flujo, bucles... y dems elementos caractersticos de la
programacin. No es de extraar, SQL es un lenguaje de consulta, no un lenguaje de
programacin.
Sin embargo, SQL es la herramienta ideal para trabajar con bases de datos. Cuando se
desea realizar una aplicacin completa para el manejo de una base de datos relacional,
resulta necesario utilizar alguna herramienta que soporte la capacidad de consulta del
SQL y la versatilidad de los lenguajes de programacin tradicionales. Transact SQL es el
lenguaje de programacin que proporciona Microsoft SQL Server para extender el SQL
estndar con otro tipo de instrucciones y elementos propios de los lenguajes de
programacin.
Con Transact SQL vamos a poder programar las unidades de programa de la base de
datos SQL Server, estn son:
Procedimientos almacenados
Funciones
Triggers








Transacciones Pgina 4

DEFINICION:

Las transacciones SQL son conjuntos de instrucciones que hay que tratar como
unidades atmicas, es decir no descomponibles en las instrucciones individuales
de las que estn formadas. Efectivamente, una transaccin se ejecuta con xito si
y slo si todas las operaciones que la componen terminan con xito. Si no, es
decir si una de las operaciones falla, o si la transaccin se anula explcitamente,
todas las operaciones anteriores son tambin anuladas.
SQL Server funciona por defecto con Transacciones de confirmacin automtica,
es decir, cada instruccin individual es una transaccin y se confirma
automticamente.
TRANSACT SQL:
Es un lenguaje que se utiliza para administrar instancias del motor de BD de SQL Server
Permite:
Crear y administras objetos de base de datos ,
Insertar , recuperar , modificar y eliminar datos
SINTAXIS

BEGIN TRAN: Se utiliza para indicar el comienzo de una transaccin
ROLLBACK TRAN: Deshace la transaccin y permite volver al estado inicial en el que
estaba la base de datos si alguna de las operaciones de la transaccin falla
COMMIT TRAN: Marca el fin de una transaccin para que la base de datos vuelva a estar
en un estado consistente cuando todas las operaciones de una transaccin se completan
con xito
TRY CATCH: A partir de la versin 2005, SQL Server proporciona el control de errores a
travs de las instrucciones TRY y CATCH.
ESTRUCTURAS DE CONTROL

IF: Permite evaluar una expresin booleana (resultado SI - NO), y ejecutar las
operaciones contenidas en el bloque formado por BEGIN END.



Transacciones Pgina 5



IF (<expresion>)
BEGIN
...
END
ELSE IF (<expresion>)
BEGIN
...
END

ELSE
BEGIN
...
END

CASE: Permite evaluar una expresin y devolver un valor u otro.
CASE <expresion>
WHEN <valor_expresion> THEN <valor_devuelto>
WHEN <valor_expresion> THEN <valor_devuelto>
ELSE <valor_devuelto> -- Valor por defecto
END
Otra sintaxis de CASE nos permite evaluar diferentes expresiones:
CASE
WHEN <expresion> = <valor_expresion> THEN <valor_devuelto>
WHEN <expresion> = <valor_expresion> THEN <valor_devuelto>
ELSE <valor_devuelto> -- Valor por defecto

END
WHILE: Se repite mientras expresion se evalue como verdadero.
WHILE <expresion>
BEGIN
...
END




Transacciones Pgina 6

OPERADORES:
La siguiente tabla ilustra los operadores de Transact SQL.
Tipo de operador Operadores
Operador de
asignacin
=
Operadores aritmticos + (suma)
- (resta)
* (multiplicacin)
/ (divisin)
** (exponente)
% (modulo)
Operadores
relacionales o de
comparacin
= (igual a)
<> (distinto de)
!= (distinto de)
< (menor que)
> (mayor que)
>= (mayor o igual a)
<= (menor o igual a)
!> (no mayor a)
!< (no menor a)
Operadores lgicos AND (y lgico)
NOT (negacion)
OR (o lgico)
& (AND a nivel de bit)
| (OR a nivel de bit)
^ (OR exclusivo a nivel de bit)
Operador de
concatenacin
+
Otros
ALL (Devuelve TRUE si el conjunto completo de
comparaciones es TRUE)
ANY(Devuelve TRUE si cualquier elemento del conjunto de
comparaciones es TRUE)
BETWEEN (Devuelve TRUE si el operando est dentro del
intervalo)
EXISTS (TRUE si una subconsulta contiene filas)
IN (TRUE si el operando est en la lista)
LIKE (TRUE si el operando coincide con un patron)
NOT (Invierte el valor de cualquier operador booleano)
SOME(Devuelve TRUE si alguna de las comparaciones de
un conjunto es TRUE)


Transacciones Pgina 7

TIPOS DE DATOS:
Cuando definimos una tabla, variable o constante debemos asignar un tipo de dato que
indica los posibles valores. El tipo de datos define el formato de almacenamiento, espacio
que de disco-memoria que va a ocupar un campo o variable, restricciones y rango de
valores vlidos.
Transact SQL proporciona una variedad predefinida de tipos de datos. Casi todos los
tipos de datos manejados por Transact SQLson similares a los soportados por SQL.
Tipos de datos numricos.
SQL Server dispone de varios tipos de datos numricos. Cuanto mayor sea el nmero
que puedan almacenar mayor ser en consecuencia el espacio utilizado para
almacenarlo. Como regla general se recomienda usar el tipo de dato mnimo posible.
Todos los datos numricos admiten el valor NULL.
Bit. Una columna o variable de tipo bit puede almacenar el rango de valores de 1 a 0.
Tinyint. Una columna o variable de tipo tinyint puede almacenar el rango de valores de 0
a 255.
SmallInt. Una columna o variable de tipo smallint puede almacenar el rango de valores -
32768 a 32767.
Int. Una columna o variable de tipo int puede almacenar el rango de valores -2
31
a 2
31
-1 .
BigInt. Una columna o variable de tipo bigint puede almacenar el rango de valores -2
63
a
2
63
-1 .
Decimal (p,s). Una columna de tipo decimal puede almacenar datos numricos decimales
sin redondear. Donde p es la precision (nmero total del dgitos) y s la escala (nmero de
valores decimales)
Float. Una columna de datos float puede almacenar el rango de valores -1,79x-
10
308
a 1,79x-10
308,
, si la definimos con el valor mximo de precisin. La precisin puede
variar entre 1 y 53.
Real. Sinnimo de float(24). Puede almacenar el rango de valores -3,4x-10
38
a 3,4x-10
38,

Money. Almacena valores numricos monetarios de -2
63
a 2
63
-1, con una precisin de
hasta diez milsimas de la unidad monetaria.
SmallMoney. Almacena valores numricos monetarios de -214.748,3647 a 214.748,3647,
con una precisin de hasta diez milsimas de la unidad monetaria.


Transacciones Pgina 8

Tipos de datos de carcter.
Char(n). Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando
almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso
si la entrada de datos es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se
almacena 'A ', ocupando los cinco bytes.
Varchar(n).Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando
almacenamos datos en el tipo varchar, nicamente se utilizan los caracteres necesarios,
Por ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A',
ocupando solo un byte bytes.
Varchar(max). Igual que varchar, pero al declararse como max puede almacenar 2
31
-1
bytes.
Nchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es
recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar
puedan pertenecer a diferentes idiomas.
Nvarchar(n).Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es
recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar
puedan pertenecer a diferentes idiomas.
Nvarchar(max).Igual que varchar, pero al declararse como max puede almacenar 2
31
-1
bytes.
Tipos de datos de fecha.
Datetime. Almacena fechas con una precisin de milisegundo. Debe usarse para fechas
muy especficas.
SmallDatetime. Almacena fechas con una precisin de minuto, por lo que ocupa la mitad
de espacio de que el tipo datetime, para tablas que puedan llegar a tener muchos datos
es un factor a tener muy en cuenta.
TimeStamp.Se utiliza para marcar un registro con la fecha de insercin - actualizacin. El
tipo timestamp se actualiza automticamente cada vez que insertamos o modificamos los
datos.
Tipos de datos binarios.
Binary. Se utiliza para almacenar datos binarios de longitud fija, con una longitud mxima
de 8000 bytes.
Varbinary. Se utiliza para almacenar datos binarios de longitud variable, con una longitud
mxima de 8000 bytes. Es muy similar a binary, salvo que varbinary utiliza menos espacio
en disco.
Varbinary(max).Igual que varbinary, pero puede almacenar 2
31
-1 bytes
Transacciones Pgina 9


CARACTERISTICAS

Las caractersticas que se deben recoger de cada transaccin son las siguientes:
Datos que utiliza la transaccin.
Caractersticas funcionales de la transaccin.
Salida de la transaccin.
Importancia para los usuarios.
Frecuencia de utilizacin.
CARACTERISTICAS ESPECFICAS:

Interactividad: Sistema computacional con la posibilidad de interactuar con el
tomador de decisiones en forma amigable y con respuesta a tiempo real.
Tipos de decisiones: Apoya el proceso de toma de decisiones estructuradas y no
estructuradas.
Frecuencia de uso: Tiene la utilizacin frecuente por parte de la administracin
media y alta para el desempeo de su funcin.
Variedad de usuarios: Puede ser utilizada por usuarios de diferentes reas
funcionales como ventas, produccin, administracin, finanzas y recurso humanos.
Flexibilidad: Permite acoplarse a una variedad determinada de estilos
administrativos.
Desarrollo: Permite el desarrollo de modelos de decisin directamente por el
usuario interesado, sin la participacin operativa de profesionales en informtica.
Interaccin ambiental: Permite la posibilidad de interactuar con informacin
externa en la definicin de los modelos de decisin.
Comunicacin interorganizacional: Facilita la comunicacin de informacin
relevante de los niveles altos a los niveles operativos y viceversa, a travs de
grficas.
Acceso a bases de datos: Tiene la capacidad de accesar informacin de las
bases de datos corporativas sin que las modifiquen.
Simplicidad: Simple y fcil de aprender y utilizar por el usuario final
Transacciones Pgina 10

Caractersticas de los sistemas de procesamiento de transacciones
(TSP)

Respuesta rpida: En este tipo de sistemas resulta crtico que exista un
rendimiento elevado con tiempos de respuesta cortos. Una empresa no puede
permitirse tener clientes esperando por una respuesta del SPT; el tiempo total
transcurrido desde que se inicia la transaccin hasta que se produce la salida
correspondiente debe ser del orden de unos pocos segundos o menos.
Fiabilidad: Muchas organizaciones basan su fiabilidad en los SPT; un fallo en
un SPT afectar negativamente a las operaciones o incluso parar totalmente
el negocio. Para que un SPT sea efectivo, su tasa de fallos debe ser muy baja.
En caso de fallo de un SPT, debe existir algn mecanismo que permita una
recuperacin rpida y precisa del sistema. Esto convierte en esencial la
existencia procedimientos de copia de seguridad y de recuperacin ante fallos
correctamente diseados.
Inflexibilidad: Un SPT requiere que todas las transacciones sean procesadas
exactamente de la misma forma, independientemente del usuario, el cliente o
la hora del da. Si los SPT fuesen flexibles, habra entonces demasiadas
posibilidades de ejecutar operaciones no estndar. Por ejemplo, una aerolnea
comercial necesita aceptar de forma consistente reservas de vuelos realizadas
por un gran nmero de agencias de viaje distintas; aceptar distintos datos de
transaccin de cada agencia de viajes supondra un problema.
Procesamiento Controlado: El procesamiento en un SPT debe apoyar las
operaciones de la organizacin. Por ejemplo, si una organizacin establece
roles y responsabilidades para determinados empleados, el SPT debe
entonces mantener y reforzar este requisito.
PROPIEDADES

Atomicidad: La Atomicidad requiere que cada transaccin sea "todo o nada": si
una parte de la transaccin falla, todas las operaciones de la transaccin fallan, y
por lo tanto la base de datos no sufre cambios. Un sistema atmico tiene que
garantizar la atomicidad en cualquier operacin y situacin, incluyendo fallas de
alimentacin elctrica, errores y cadas del sistema. Una transaccin debe ser una
unidad atmica de trabajo, tanto si se realizan todas sus modificaciones en los
datos, como si no se realiza ninguna de ellas.
Consistencia: La propiedad de Consistencia se asegura que cualquier
transaccin llevar a la base de datos de un estado vlido a otro estado vlido.
Cualquier dato que se escriba en la base de datos tiene que ser vlido de acuerdo
a todas las reglas definidas, incluyendo (pero no limitado a) los constraints, los
cascades, los triggers, y cualquier combinacin de estos.
Transacciones Pgina 11

Cuando finaliza, una transaccin debe dejar todos los datos en un estado
coherente.
Aislamiento: El aislamiento ("Isolation" en ingls) se asegura que la ejecucin
concurrente de las transacciones resulte en un estado del sistema que se
obtendra si estas transacciones fueran ejecutadas una atrs de otra. Cada
transaccin debe ejecutarse en aislamiento total; por ejemplo, si T1 y T2 se
ejecutan concurrentemente, luego cada una debe mantenerse independiente de la
otra.
Durabilidad: La durabilidad significa que una vez que se confirm una transaccin
(commit), quedar persistida, incluso ante eventos como prdida de alimentacin
elctrica, errores y cadas del sistema. Por ejemplo, en las bases de datos
relacionales, una vez que se ejecuta un grupo de sentencias SQL, los resultados
tienen que almacenarse inmediatamente (incluso si la base de datos se cae
inmediatamente luego).
Una vez concluida una transaccin, sus efectos son permanentes en el sistema.
Las modificaciones persisten an en el caso de producirse un error del sistema.

ESTADOS

Activa: estado inicial, estado normal durante la ejecucin.
Parcialmente Cometida: despus de ejecutarse la ltima instruccin.
Fallada: luego de descubrir que no puede seguir la ejecucin normal.
Abortada: despus de haber retrocedido la transaccin y restablecido la
BD al estado anterior al comienzo de la transaccin.
Cometida: (tras completarse con xito) se ha cometido parcialmente y se
garantiza que nunca abortar.
DECLARACIONES

Es posible controlar las declaraciones en una transaccin de una manera ms
granular por medio de puntos de recuperacin (savepoints). Los puntos de
recuperacin permiten descartar selectivamente algunas partes de la transaccin
mientras las dems s se ejecutan. Despus de definir un punto de recuperacin con
SAVEPOINT, se puede volver a l si es necesario por medio de ROLLBACK TO.
Todos los cambios de la base de datos hechos por la transaccin entre el punto de
recuperacin y el rollback se descartan, pero los cambios hechos antes del punto de
recuperacin se mantienen.
Transacciones Pgina 12

Despus de volver a un punto de recuperacin, este ltimo sigue definido, o sea que
se puede volver a l varias veces. Y al contrario, si uno est seguro de que no
necesita volver a un punto de recuperacin particular otra vez, entonces puede
liberarlo para que el sistema ahorre algunos recursos. Tenga en cuenta que tanto
liberar un punto de recuperacin como volver a l liberar automticamente todos los
puntos de recuperacin definidos despus de l.
Todo esto sucede dentro del bloque de transaccin, por lo tanto nada es visible para
otras sesiones de la base de datos. Cuando se ejecuta el bloque de transaccin, las
acciones ejecutadas se hacen visibles como una unidad para otras sesiones, mientras
que las acciones de rollback nunca se hacen visibles.























Transacciones Pgina 13


EJEMPLOS DE TRANSACCIONES:

Utilizaremos la base de datos Docente 1.0 :
OPERADORES ARITMETICOS
declare @semestre varchar(10)
declare @semestre1 varchar(10)
declare @semestre2 varchar(10)
declare @totAlum INT
declare @promAlum INT

declare @20131 INT
declare @20132 INT
declare @20141 INT
declare @mensaje varchar(100)

set @semestre ='2013-I'
set @semestre1 ='2013-II'
set @semestre2 ='2014-I'

SET @20131=(SELECT COUNT(tAlumno.Alumno)
FROM tAlumno INNER JOIN
tSemestre ON tAlumno.Semestre = tSemestre.Semestre
where tSemestre.Nombre=@semestre )

SET @20132=(SELECT COUNT(tAlumno.Alumno)
FROM tAlumno INNER JOIN
tSemestre ON tAlumno.Semestre = tSemestre.Semestre
where tSemestre.Nombre=@semestre1 )

SET @20141=(SELECT COUNT(tAlumno.Alumno)
FROM tAlumno INNER JOIN
tSemestre ON tAlumno.Semestre = tSemestre.Semestre
where tSemestre.Nombre=@semestre2 )

set @totAlum=(@20131+@20132+@20141)

SET @promAlum = ((@20131+@20132+@20141)/3)

print ' OPERADORES ARITMETICOS : '
PRINT ''
PRINT ' Numero de alumnos del semestre 2013-I :'
print @20131
PRINT ''
PRINT ' Numero de alumnos del semestre 2013-II :'
print @20132
PRINT ''
Transacciones Pgina 14

PRINT ' Numero de alumnos del semestre 2014-I :'
print @20141
PRINT ''
PRINT ' Total de alumnos :'
print @totAlum

PRINT ''
PRINT ' El Promedio de Alumnos es :'
print @PromAlum

PRINT ''
PRINT 'Y me sobra :'
print ((@20131+@20132+@20141)%3)


OPERADORES DE COMPARACIN
----------------------------------------------------------------------------
-----------------------------------MENOR Y MAYOR----------------------------
----------------------------------------------------------------------------

declare @promedio decimal
declare @codigo varchar(8)

set @codigo = '127113'

SELECT ISNULL(Nombre1,'')+ISNULL(' '+Nombre2,' ')+ISNULL('
'+Nombre3,'')+ISNULL(' '+Paterno,' ')+ISNULL(' '+Materno,'') as Nombres
FROM tAlumno
where Alumno = @codigo

set @promedio =(SELECT
AVG(tAlumnoTarea.Nota) AS PROMEDIO_FINAL
FROM tCurso
INNER JOIN tCursoEvaluacion ON tCurso.Curso = tCursoEvaluacion.Curso
INNER JOIN tSemestre ON tSemestre.Semestre = tCursoEvaluacion.Semestre
INNER JOIN tAlumno ON tSemestre.Semestre = tAlumno.Semestre
INNER JOIN tAlumnoTarea ON tAlumno.Alumno = tAlumnoTarea.Alumno
INNER JOIN tTarea ON tTarea.Tarea = tAlumnoTarea.Tarea
WHERE tCurso.Nombre='Base de datos' AND tSemestre.Nombre= '2013-II' AND
tAlumno.Alumno = @codigo
)


if @promedio < 10.5

print 'Desaprobado'


else
Transacciones Pgina 15

if @promedio >= 10.5

print 'Aprobado'
print @promedio

----------------------------------------------------------------------------
-----------------------------------IGUAL------------------------------------
----------------------------------------------------------------------------
declare @semestr1 varchar(7)
declare @variable1 int
declare @semestr2 varchar(7)
declare @variable2 int

set @semestr1 ='2013-II'
set @variable1 = (SELECT COUNT(tAlumno.Alumno)
FROM tAlumno INNER JOIN
tSemestre ON tAlumno.Semestre = tSemestre.Semestre
WHERE tSemestre.Nombre=@semestr1)

set @semestr2 ='2014-I'
set @variable2 = (SELECT COUNT(tAlumno.Alumno)
FROM tAlumno INNER JOIN
tSemestre ON tAlumno.Semestre = tSemestre.Semestre

WHERE tSemestre.Nombre=@semestr2)

if @variable1 = @variable2
print 'VERDADERO'

else
print 'FALSO'

--cantidad de alumnos en el semestre 2013-II
SELECT COUNT(tAlumno.Alumno) as [alumnos semestre 2013-II]
FROM tAlumno INNER JOIN
tSemestre ON tAlumno.Semestre = tSemestre.Semestre
where tSemestre.Nombre = '2013-II'
--cantidad de alumnos en el semestre 2014-I
SELECT COUNT(tAlumno.Alumno) as [alumnos semestre 2014-I]
FROM tAlumno INNER JOIN
tSemestre ON tAlumno.Semestre = tSemestre.Semestre
where tSemestre.Nombre = '2014-I'

CASE

---------------------------------ESTRUCTURA CASE----------------------------------------------------------
--
declare @estudiante varchar(100)
declare @mensaje varchar(100)
declare @delegado INT

Transacciones Pgina 16

set @estudiante = '127131'
set @delegado = (SELECT Delegado
FROM tAlumno
where Alumno = @estudiante)

SELECT ISNULL(Nombre1,'')+ISNULL(' '+Nombre2,'
')+ISNULL(' '+Nombre3,'')+ISNULL(' '+Paterno,' ')+ISNULL(' '+Materno,'') as Nombres
FROM tAlumno
where Alumno = @estudiante

set @mensaje = ( CASE @delegado

WHEN 1 THEN 'El alumno(a) es Delegado'
WHEN 0 THEN 'El alumno(a) no es Delegado'

END
)
print @mensaje


OPERADORES LOGICO
--------------------------------------------------
-------------- OR--------------------------------
--------------------------------------------------

begin
declare @Creditos1 int, @Creditos2 int
set @Creditos1 = 3
set @Creditos2=2
if @Creditos1 = @Creditos2 or @Creditos1<@Creditos2
print 'ES CIERTO'
else
print 'ES FALSO'
end

-----------------------------------------------
GO----------------and--------------------------
-----------------------------------------------

begin
declare @semestre varchar(50)
declare @curso varchar(60)
declare @nrotareas int

set @semestre = '2013-II'
set @curso = 'Base de Datos'
set @nrotareas = ( select count(*) 'Numero de tareas'
from tTarea as TAREA INNER JOIN tSemestre
SEMESTRE ON SEMESTRE.Semestre = TAREA.Semestre
WHERE SEMESTRE.Nombre = '2013-II' )
Transacciones Pgina 17

if @semestre = '2013-II' and @curso='Base deDatos'
print 'El numero de tareas dadas en el semestre
2013-II en el curso de Base de Datos es:'
print @nrotareas
end

TRYCATEY TRY CATCH

begin try
declare @codigo varchar(10)
declare @curso varchar(100)
declare @semestre varchar(10)

declare @mnombreEstudiante varchar(100)
declare @numTareas varchar(100)
declare @prom INT

declare @mensaje varchar(100)


set @codigo='127113'
set @curso='Base de Datos'
set @semestre ='2013-II'
set @mnombreEstudiante=(select Nombre1+' '+Nombre2+' '+Paterno+' '+Materno as
Nombre from tAlumno where Alumno=@codigo)
set @numTareas=(SELECT COUNT(tTarea.Tarea)
FROM tSemestre INNER JOIN
tAlumno ON tSemestre.Semestre = tAlumno.Semestre INNER JOIN
tSemestreCurso ON tSemestre.Semestre = tSemestreCurso.Semestre
INNER JOIN
tCurso ON tSemestreCurso.Curso = tCurso.Curso INNER JOIN
tTarea ON tSemestre.Semestre = tTarea.Semestre INNER JOIN
tAlumnoTarea ON tAlumno.Alumno = tAlumnoTarea.Alumno AND
tAlumno.Semestre = tAlumnoTarea.Semestre AND tTarea.Tarea = tAlumnoTarea.Tarea
AND
tTarea.Curso = tAlumnoTarea.Curso AND tTarea.Semestre =
tAlumnoTarea.Semestre AND tTarea.Evaluacion = tAlumnoTarea.Evaluacion
where tAlumno.Alumno=@codigo and tCurso.Nombre=@curso and
tSemestre.Nombre=@semestre )

set @prom=(SELECT AVG(tAlumnoTarea.Nota)
FROM tSemestre INNER JOIN
tAlumno ON tSemestre.Semestre = tAlumno.Semestre INNER JOIN
tSemestreCurso ON tSemestre.Semestre = tSemestreCurso.Semestre
INNER JOIN
tCurso ON tSemestreCurso.Curso = tCurso.Curso INNER JOIN
tTarea ON tSemestre.Semestre = tTarea.Semestre INNER JOIN
tAlumnoTarea ON tAlumno.Alumno = tAlumnoTarea.Alumno AND
tAlumno.Semestre = tAlumnoTarea.Semestre AND tTarea.Tarea = tAlumnoTarea.Tarea
AND
Transacciones Pgina 18

tTarea.Curso = tAlumnoTarea.Curso AND tTarea.Semestre =
tAlumnoTarea.Semestre AND tTarea.Evaluacion = tAlumnoTarea.Evaluacion
where tAlumno.Alumno=@codigo and tCurso.Nombre=@curso and
tSemestre.Nombre=@semestre)

--PRINT 40/0
print ' REPORTE DEL ALUMNO : '
PRINT ''
print @mnombreEstudiante
PRINT ''
PRINT ' Numero de trabajos :'
PRINT @numTareas
PRINT ''
PRINT ' promedio de trabajos :'
PRINT @prom
--SET @mensaje= if @prom>10 print 'aprobado '
--else print 'desaprobado'
end try
begin catch
print 'hay error en la operacion'
print ERROR_MESSAGE()
end catch

Вам также может понравиться