SlideShare una empresa de Scribd logo
DAI – Ing. Oscar Condori 1
4.4- Funciones Definidas por el Usuario
Sistemas de Base de Datos
Se tienen tres tipos:
 Escalares: Retornan un tipo de los datos como
int, money, varchar, real, etc. Pueden ser
utilizadas dentro de sentencias SQL.
 De tabla en Linea: Retornan la salida de una
simple declaración SELECT. La salida se puede
utilizar dentro de composiciones o consultas
como si fuera una tabla de estándar.
 De multisentencia: Dan como resultado una
tabla, puede estar constituido por varias
sentencias SQL, y puede llamar a otras
funciones. La salida también se puede utilizar
en operaciones de tabla.
2
4.4- Procedimientos Almacenados
Sistemas de Base de Datos
 Un procedimiento almacenado (stored
procedure) es un grupo de sentencias SQL
que es compilado una vez, y luego puede
ser ejecutado muchas veces.
 Los procedimientos almacenados se
almacenan en la base de datos y
constituyen los servicios que ofrece la base
de datos (Cliente/Servidor).
 Los procedimientos almacenados cuando
se ejecutan no tienen que ser
recompilados cada vez, este hecho hace
que sean muy eficientes.
DAI – Ing. Oscar Condori
3
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Los procedimientos almacenados se almacenan en la base de datos y
constituyen los servicios que ofrece la base de datos.
BASE DE
DATOS
Aplicación
Aplicación
Aplicación
Datos
Solicitud Servicios (SQL)
Clientes
Servidor
Proc. Almacenado 1
Proc. Almacenado 2
…
Proc. Almacenado n
DAI – Ing. Oscar Condori
4
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
 Se escriben utilizando el lenguaje de
programación de la base de Datos. Permiten
declaración de variables, sentencias de
asignación, estructuras selectivas y repetitivas.
 Aceptan parámetros de entrada y salida
 Pueden retornar conjunto de datos así como
también un solo valor.
 Permiten la programación modular y puede hacer
referencia a otros procedimientos almacenados,
con lo que se puede simplificar una serie de
instrucciones complejas.
 Pueden ser ejecutados desde otros
procedimientos almacenados, vistas, disparadores
y consultas en general.
DAI – Ing. Oscar Condori
5
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
CREATE PROCEDURE nombre procedimiento
@parametros tipo de dato [= valor],
@parametros_salida tipo de dato OUTPUT
AS
[DECLARE @Variables tipos]
BEGIN
sentencias sql
END
Sintaxis :
DAI – Ing. Oscar Condori
6
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Escribir procedimientos almacenados
CREATE PROCEDURE sp_AlumnosPorCarrera
@Cod_Carrera varchar(2)
AS
BEGIN
-- Seleccionar alumnos de la carrera indicada
SELECT *
FROM ALUMNO
WHERE Cod_Carrera = @Cod_Carrera
END
Escribir un procedimiento para determinar la
relación de alumnos de una determinada carrera
Constituye el código fuente, se debe almacenar
como un archivo de extensión SQL.
Este código se debe compilar y almacenar en la
base de datos, para que pueda ser invocado como un
servicio.
DAI – Ing. Oscar Condori
7
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
[DECLARE @variables tipo de variable]
EXEC/EXECUTE nombre_procedimiento [@parametros], [@variables]
Ejecución de un procedimiento.
Sintaxis :
Ejemplo de ejecución:
exec sp_AlumnosPorCarrera ‘IN’
DAI – Ing. Oscar Condori
8
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios:
Dadas las siguientes tablas
Comunidad( CodComunidad, Nombre)
Prestatario( CodPrestatario, Nombres, Sexo, EstadoCivil, DocIdentidad,
CodComunidad)
Oficial_Credito( CodOficial, Nombres, Email)
Prestamo( DocPrestamo, FechaPrestamo, Importe, FechaVencimiento,
CodPrestatario, CodOficial)
Amortizacion( DocCancelacion, FechaCancelacion, Importe,
DocPrestamo)
DAI – Ing. Oscar Condori
9
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 1)
create procedure spu_Saldo_Comunidad @CodComunidad varchar(12)
as
begin
-- Determinar los montos cancelados por cada documento
select DocPrestamo, sum(Importe) MontoCancelado
into #Montos_Cancelados
from Amortizacion
group by DocPrestamo
-- Determinar los saldos de cada Prestamo
select P.DocPrestamo, P.CodPrestatario,
(P.Importe - IsNull(M.MontoCancelado,0)) Saldo
into #Saldos_Prestamos
from Prestamo P left outer join #Montos_Cancelados M
on P.DocPrestamo = M.DocPrestamo
Determinar la relacion de Comunidades, con los saldos de los
prestamos pertenecientes a la comunidad.
R(CodComunidad, Nombre, Saldo)
DAI – Ing. Oscar Condori
10
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 1 …)
-- Determinar los saldos de cada prestatario de la comunidad
-- especificada
select S.CodPrestatario, sum(S.Saldo) Saldo, P.CodComunidad
into #Saldos_Prestatario
from #Saldos_Prestamos S, Prestatario P
where (S.CodPrestatario = P.CodPrestatario) and
(P.CodComunidad = @CodComunidad)
group by S.CodPrestatario, P.CodComunidad
-- Determinar los saldos de cada comunidad
select S.CodComunidad, C.Nombre, sum(S.Saldo) Saldo
from #Saldos_Prestatario S, Comunidad C
where S.CodComunidad = C.CodComunidad
group by S.CodComunidad, C.Nombre
end;
DAI – Ing. Oscar Condori
11
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 2)
Escribir un procedimiento almacenado que obtenga los
movimientos para un determinado prestatario, considerando los
saldos por préstamo y los saldos por prestatario. El procedimiento
debe mostrar la relación de todos los préstamos del prestatario y
para cada préstamo sus respectivas cancelaciones, tal como se
ilustra en el ejemplo siguiente:
R(FechaMov,DocPrestamo,DocCancelacion,Debe,Haber,SaldoPrestamo,SaldoTotal)
02/02/06 PA-101 1000 1000 1000
31/03/06 RC-421 200 800 800
30/04/06 RC-467 300 500 500
15/04/06 PA-246 1600 1600 2100
30/04/06 RC-478 700 900 1400
31/05/06 RC-523 900 0 500
...
DAI – Ing. Oscar Condori
12
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 2 …)
create procedure sp_Prestatario_Rural_Movimientos
@CodPrestatario varchar(15)
as
begin
-- Crear tabla vacia de movimientos
create table #Movimientos
(
Fecha_Mov DateTime,
DocPrestamo varchar(15),
DocCancelacion varchar(15),
Debe numeric(15,2),
Haber numeric(15,2),
SaldoPrestamo numeric(15,2),
SaldoTotal numeric(15,2)
)
DAI – Ing. Oscar Condori
13
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 2 …)
-- Recuperar Prestamos y cancelaciones de movimientos
-- Declarar variables utilizadas por el cursor
declare @DocPrestamo varchar(15), @FechaPrestamo DateTime,
@ImportePrestamo numeric(15,2),
@SaldoPrestamo numeric(15,2),
@SaldoTotal numeric(15,2);
-- Inicializar saldo
set @SaldoPrestamo = 0;
set @SaldoTotal = 0;
-- Declarar el cursor
declare cursor_Prestamo cursor
for
select DocPrestamo, FechaPrestamo, ImportePrestamo
from Prestamo
where CodPrestatario = @CodPrestatario;
-- Abrir el cursor
open cursor_Prestamo;
DAI – Ing. Oscar Condori
14
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 2 …)
-- Activar la primera fila del cursor
fetch next from cursor_Prestamo
into @DocPrestamo, @FechaPrestamo, @ImportePrestamo
-- Procesar cada fila repetitivamente
while @@FETCH_STATUS = 0
begin
-- Inicializar saldo prestamo
set @SaldoPrestamo = @ImportePrestamo;
-- Actualizar saldo total
set @SaldoTotal = @SaldoTotal + @ImportePrestamo;
-- Insertar prestamo en tabla de movimientos
insert into #Movimientos
values(@FechaPrestamo,@DocPrestamo,'',
@ImportePrestamo,0,@SaldoPrestamo,
@SaldoTotal)
-- Procesar cancelaciones del prestamo
declare @DocCancelacion varchar(15),
@FechaCancelacion DateTime,
@ImporteCancelacion numeric(15,2);
DAI – Ing. Oscar Condori
15
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 2 …)
-- Declarar el cursor anidado
declare cursor_Cancelacion cursor
for
select DocCancelacion, FechaCancelacion, ImporteCancelacion
from Cancelacion
where DocPrestamo = @DocPrestamo;
-- Abrir el cursor
open cursor_Cancelacion;
-- Activar la primera fila del cursor
fetch next from cursor_Cancelacion
into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion
-- Procesar cada fila repetitivamente
while @@FETCH_STATUS = 0
begin
-- Actualizar saldos
set @SaldoPrestamo = @SaldoPrestamo - @ImporteCancelacion;
set @SaldoTotal = @SaldoTotal - @ImporteCancelacion;
DAI – Ing. Oscar Condori
16
4.4- Procedimientos Almacenados…
Sistemas de Base de Datos
Ejercicios (Problema 2 …)
-- Insertar prestamo en tabla de movimientos
insert into #Movimientos
values(@FechaCancelacion,'',@DocCancelacion, 0,
@ImportePrestamo, @SaldoPrestamo, @SaldoTotal)
-- Siguiente registro
fetch next from cursor_Cancelacion
into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion
end; -- while
-- Cerrar Cursor
close cursor_Cancelacion;
deallocate cursor_Cancelacion;
-- Siguiente registro de prestamo
fetch next from cursor_Prestamo
into @DocPrestamo, @FechaPrestamo, @ImportePrestamo
end; -- while
-- Cerrar Cursor
close cursor_Prestamo;
deallocate cursor_Prestamo;
-- Mostrar Movimientos
select *
from #Movimientos
end;
DAI – Ing. Oscar Condori

Más contenido relacionado

PPT
Cursores
PPT
7090112 Clase Transact Sql Server
PPT
Arquitectura cliente servidor
PPTX
PROCEDIMIENTOS ALMACENADOS
PPTX
Introduction to sas in spanish
PDF
Procedimientos almacenados
PDF
Practica Seis Delphi
Cursores
7090112 Clase Transact Sql Server
Arquitectura cliente servidor
PROCEDIMIENTOS ALMACENADOS
Introduction to sas in spanish
Procedimientos almacenados
Practica Seis Delphi

Similar a Funciones y Procedimientos ideal para desarollo (20)

PDF
1 Procedimientos Almacenados WPB.pdf
PDF
Data Warehouse en las empresas y negocios.pdf
DOCX
Tarea 3
PPTX
Procedimientos Almacenados
PPTX
1-Programacion-JavaDFDFDFDFDFDFDFDF.pptx
DOCX
Estructuras basicas
DOCX
Estructuras básicas
DOCX
Estructuras básicas
DOCX
ESTRUCTURAS BÁSICAS
PPT
Tuning fondo-negro-2
PDF
Curso de SQL Server: implementacion (T-SQL)
PDF
DIAGRAMAS DE FLUJO
PDF
Tecnologia 10 5
PPTX
Unidad 4
PPTX
Tema 4 -_introduccion_a_razonamiento_algoritmico
PDF
UiPath Community - Automation Explorer Training - Bootcamp Día 2
PPT
Programación con C/AL para Microsoft Business Solutions Navision
PPTX
Ms SQL Server
1 Procedimientos Almacenados WPB.pdf
Data Warehouse en las empresas y negocios.pdf
Tarea 3
Procedimientos Almacenados
1-Programacion-JavaDFDFDFDFDFDFDFDF.pptx
Estructuras basicas
Estructuras básicas
Estructuras básicas
ESTRUCTURAS BÁSICAS
Tuning fondo-negro-2
Curso de SQL Server: implementacion (T-SQL)
DIAGRAMAS DE FLUJO
Tecnologia 10 5
Unidad 4
Tema 4 -_introduccion_a_razonamiento_algoritmico
UiPath Community - Automation Explorer Training - Bootcamp Día 2
Programación con C/AL para Microsoft Business Solutions Navision
Ms SQL Server
Publicidad

Último (20)

PPTX
_Service and Sales 2 Cloud Intro Mar 2022 español.pptx
PPTX
Enfermedad diver ticular.pptx
PPTX
Desechos solidos especializados de hodnuras.
PPTX
1748538606_68389hhhhhhhhhhh4ee56ae5.pptx
PPTX
Slide_Introducci_n_a_las_empresas.pptx__
PPT
Teoria General de Sistemas empresariales
PDF
PRESEN-ventas DE VENTAS Y FIDELIZACIONN DE CLI
PPT
TEMA 5 MANUALES ADMINISTRATIVOS Temas administrativos
PPTX
ASERTIVIDAD EN EL TRABAJO PARA EL MANEJO DE RRHH
PPTX
NIA 265-SANDOVAL MARIN FRANZ DANNY CODIGO.pptx
PDF
yarrownnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn.pdf
PPT
Clase 14 Variables e indicadoresargentina.ppt
PPTX
El ascenso económico de Asia y sus implicancias para el sistema multilateral ...
PPTX
ECONOMIA PLURAL para el entendimiento empresarial
PPTX
CALIDAD TOTAL TRABAJO FULL DE LINA MARTINEZ
PPTX
CAPACITACION SEÑALIZACION, tipos de señales.pptx
PDF
Otros Coeficientes Correlación_FHE_UCV.pdf
PDF
Copia de PRESENTACION POST-BUROCRACIA_20250727_111400_0000.pdf
PDF
PPT Presentacion Politica Nacional de Desarrollo e Inclusion Social (1) (1).pdf
PPTX
Tema 3 La Función Dirección.fundamental pptx
_Service and Sales 2 Cloud Intro Mar 2022 español.pptx
Enfermedad diver ticular.pptx
Desechos solidos especializados de hodnuras.
1748538606_68389hhhhhhhhhhh4ee56ae5.pptx
Slide_Introducci_n_a_las_empresas.pptx__
Teoria General de Sistemas empresariales
PRESEN-ventas DE VENTAS Y FIDELIZACIONN DE CLI
TEMA 5 MANUALES ADMINISTRATIVOS Temas administrativos
ASERTIVIDAD EN EL TRABAJO PARA EL MANEJO DE RRHH
NIA 265-SANDOVAL MARIN FRANZ DANNY CODIGO.pptx
yarrownnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn.pdf
Clase 14 Variables e indicadoresargentina.ppt
El ascenso económico de Asia y sus implicancias para el sistema multilateral ...
ECONOMIA PLURAL para el entendimiento empresarial
CALIDAD TOTAL TRABAJO FULL DE LINA MARTINEZ
CAPACITACION SEÑALIZACION, tipos de señales.pptx
Otros Coeficientes Correlación_FHE_UCV.pdf
Copia de PRESENTACION POST-BUROCRACIA_20250727_111400_0000.pdf
PPT Presentacion Politica Nacional de Desarrollo e Inclusion Social (1) (1).pdf
Tema 3 La Función Dirección.fundamental pptx
Publicidad

Funciones y Procedimientos ideal para desarollo

  • 1. DAI – Ing. Oscar Condori 1 4.4- Funciones Definidas por el Usuario Sistemas de Base de Datos Se tienen tres tipos:  Escalares: Retornan un tipo de los datos como int, money, varchar, real, etc. Pueden ser utilizadas dentro de sentencias SQL.  De tabla en Linea: Retornan la salida de una simple declaración SELECT. La salida se puede utilizar dentro de composiciones o consultas como si fuera una tabla de estándar.  De multisentencia: Dan como resultado una tabla, puede estar constituido por varias sentencias SQL, y puede llamar a otras funciones. La salida también se puede utilizar en operaciones de tabla.
  • 2. 2 4.4- Procedimientos Almacenados Sistemas de Base de Datos  Un procedimiento almacenado (stored procedure) es un grupo de sentencias SQL que es compilado una vez, y luego puede ser ejecutado muchas veces.  Los procedimientos almacenados se almacenan en la base de datos y constituyen los servicios que ofrece la base de datos (Cliente/Servidor).  Los procedimientos almacenados cuando se ejecutan no tienen que ser recompilados cada vez, este hecho hace que sean muy eficientes. DAI – Ing. Oscar Condori
  • 3. 3 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Los procedimientos almacenados se almacenan en la base de datos y constituyen los servicios que ofrece la base de datos. BASE DE DATOS Aplicación Aplicación Aplicación Datos Solicitud Servicios (SQL) Clientes Servidor Proc. Almacenado 1 Proc. Almacenado 2 … Proc. Almacenado n DAI – Ing. Oscar Condori
  • 4. 4 4.4- Procedimientos Almacenados… Sistemas de Base de Datos  Se escriben utilizando el lenguaje de programación de la base de Datos. Permiten declaración de variables, sentencias de asignación, estructuras selectivas y repetitivas.  Aceptan parámetros de entrada y salida  Pueden retornar conjunto de datos así como también un solo valor.  Permiten la programación modular y puede hacer referencia a otros procedimientos almacenados, con lo que se puede simplificar una serie de instrucciones complejas.  Pueden ser ejecutados desde otros procedimientos almacenados, vistas, disparadores y consultas en general. DAI – Ing. Oscar Condori
  • 5. 5 4.4- Procedimientos Almacenados… Sistemas de Base de Datos CREATE PROCEDURE nombre procedimiento @parametros tipo de dato [= valor], @parametros_salida tipo de dato OUTPUT AS [DECLARE @Variables tipos] BEGIN sentencias sql END Sintaxis : DAI – Ing. Oscar Condori
  • 6. 6 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Escribir procedimientos almacenados CREATE PROCEDURE sp_AlumnosPorCarrera @Cod_Carrera varchar(2) AS BEGIN -- Seleccionar alumnos de la carrera indicada SELECT * FROM ALUMNO WHERE Cod_Carrera = @Cod_Carrera END Escribir un procedimiento para determinar la relación de alumnos de una determinada carrera Constituye el código fuente, se debe almacenar como un archivo de extensión SQL. Este código se debe compilar y almacenar en la base de datos, para que pueda ser invocado como un servicio. DAI – Ing. Oscar Condori
  • 7. 7 4.4- Procedimientos Almacenados… Sistemas de Base de Datos [DECLARE @variables tipo de variable] EXEC/EXECUTE nombre_procedimiento [@parametros], [@variables] Ejecución de un procedimiento. Sintaxis : Ejemplo de ejecución: exec sp_AlumnosPorCarrera ‘IN’ DAI – Ing. Oscar Condori
  • 8. 8 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios: Dadas las siguientes tablas Comunidad( CodComunidad, Nombre) Prestatario( CodPrestatario, Nombres, Sexo, EstadoCivil, DocIdentidad, CodComunidad) Oficial_Credito( CodOficial, Nombres, Email) Prestamo( DocPrestamo, FechaPrestamo, Importe, FechaVencimiento, CodPrestatario, CodOficial) Amortizacion( DocCancelacion, FechaCancelacion, Importe, DocPrestamo) DAI – Ing. Oscar Condori
  • 9. 9 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 1) create procedure spu_Saldo_Comunidad @CodComunidad varchar(12) as begin -- Determinar los montos cancelados por cada documento select DocPrestamo, sum(Importe) MontoCancelado into #Montos_Cancelados from Amortizacion group by DocPrestamo -- Determinar los saldos de cada Prestamo select P.DocPrestamo, P.CodPrestatario, (P.Importe - IsNull(M.MontoCancelado,0)) Saldo into #Saldos_Prestamos from Prestamo P left outer join #Montos_Cancelados M on P.DocPrestamo = M.DocPrestamo Determinar la relacion de Comunidades, con los saldos de los prestamos pertenecientes a la comunidad. R(CodComunidad, Nombre, Saldo) DAI – Ing. Oscar Condori
  • 10. 10 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 1 …) -- Determinar los saldos de cada prestatario de la comunidad -- especificada select S.CodPrestatario, sum(S.Saldo) Saldo, P.CodComunidad into #Saldos_Prestatario from #Saldos_Prestamos S, Prestatario P where (S.CodPrestatario = P.CodPrestatario) and (P.CodComunidad = @CodComunidad) group by S.CodPrestatario, P.CodComunidad -- Determinar los saldos de cada comunidad select S.CodComunidad, C.Nombre, sum(S.Saldo) Saldo from #Saldos_Prestatario S, Comunidad C where S.CodComunidad = C.CodComunidad group by S.CodComunidad, C.Nombre end; DAI – Ing. Oscar Condori
  • 11. 11 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 2) Escribir un procedimiento almacenado que obtenga los movimientos para un determinado prestatario, considerando los saldos por préstamo y los saldos por prestatario. El procedimiento debe mostrar la relación de todos los préstamos del prestatario y para cada préstamo sus respectivas cancelaciones, tal como se ilustra en el ejemplo siguiente: R(FechaMov,DocPrestamo,DocCancelacion,Debe,Haber,SaldoPrestamo,SaldoTotal) 02/02/06 PA-101 1000 1000 1000 31/03/06 RC-421 200 800 800 30/04/06 RC-467 300 500 500 15/04/06 PA-246 1600 1600 2100 30/04/06 RC-478 700 900 1400 31/05/06 RC-523 900 0 500 ... DAI – Ing. Oscar Condori
  • 12. 12 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 2 …) create procedure sp_Prestatario_Rural_Movimientos @CodPrestatario varchar(15) as begin -- Crear tabla vacia de movimientos create table #Movimientos ( Fecha_Mov DateTime, DocPrestamo varchar(15), DocCancelacion varchar(15), Debe numeric(15,2), Haber numeric(15,2), SaldoPrestamo numeric(15,2), SaldoTotal numeric(15,2) ) DAI – Ing. Oscar Condori
  • 13. 13 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 2 …) -- Recuperar Prestamos y cancelaciones de movimientos -- Declarar variables utilizadas por el cursor declare @DocPrestamo varchar(15), @FechaPrestamo DateTime, @ImportePrestamo numeric(15,2), @SaldoPrestamo numeric(15,2), @SaldoTotal numeric(15,2); -- Inicializar saldo set @SaldoPrestamo = 0; set @SaldoTotal = 0; -- Declarar el cursor declare cursor_Prestamo cursor for select DocPrestamo, FechaPrestamo, ImportePrestamo from Prestamo where CodPrestatario = @CodPrestatario; -- Abrir el cursor open cursor_Prestamo; DAI – Ing. Oscar Condori
  • 14. 14 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 2 …) -- Activar la primera fila del cursor fetch next from cursor_Prestamo into @DocPrestamo, @FechaPrestamo, @ImportePrestamo -- Procesar cada fila repetitivamente while @@FETCH_STATUS = 0 begin -- Inicializar saldo prestamo set @SaldoPrestamo = @ImportePrestamo; -- Actualizar saldo total set @SaldoTotal = @SaldoTotal + @ImportePrestamo; -- Insertar prestamo en tabla de movimientos insert into #Movimientos values(@FechaPrestamo,@DocPrestamo,'', @ImportePrestamo,0,@SaldoPrestamo, @SaldoTotal) -- Procesar cancelaciones del prestamo declare @DocCancelacion varchar(15), @FechaCancelacion DateTime, @ImporteCancelacion numeric(15,2); DAI – Ing. Oscar Condori
  • 15. 15 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 2 …) -- Declarar el cursor anidado declare cursor_Cancelacion cursor for select DocCancelacion, FechaCancelacion, ImporteCancelacion from Cancelacion where DocPrestamo = @DocPrestamo; -- Abrir el cursor open cursor_Cancelacion; -- Activar la primera fila del cursor fetch next from cursor_Cancelacion into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion -- Procesar cada fila repetitivamente while @@FETCH_STATUS = 0 begin -- Actualizar saldos set @SaldoPrestamo = @SaldoPrestamo - @ImporteCancelacion; set @SaldoTotal = @SaldoTotal - @ImporteCancelacion; DAI – Ing. Oscar Condori
  • 16. 16 4.4- Procedimientos Almacenados… Sistemas de Base de Datos Ejercicios (Problema 2 …) -- Insertar prestamo en tabla de movimientos insert into #Movimientos values(@FechaCancelacion,'',@DocCancelacion, 0, @ImportePrestamo, @SaldoPrestamo, @SaldoTotal) -- Siguiente registro fetch next from cursor_Cancelacion into @DocCancelacion, @FechaCancelacion, @ImporteCancelacion end; -- while -- Cerrar Cursor close cursor_Cancelacion; deallocate cursor_Cancelacion; -- Siguiente registro de prestamo fetch next from cursor_Prestamo into @DocPrestamo, @FechaPrestamo, @ImportePrestamo end; -- while -- Cerrar Cursor close cursor_Prestamo; deallocate cursor_Prestamo; -- Mostrar Movimientos select * from #Movimientos end; DAI – Ing. Oscar Condori

Notas del editor

  • #2: DAI - Ing. Arturo Rozas Huacho
  • #3: DAI - Ing. Arturo Rozas Huacho
  • #4: DAI - Ing. Arturo Rozas Huacho
  • #5: DAI - Ing. Arturo Rozas Huacho
  • #6: DAI - Ing. Arturo Rozas Huacho
  • #7: DAI - Ing. Arturo Rozas Huacho
  • #8: DAI - Ing. Arturo Rozas Huacho
  • #9: DAI - Ing. Arturo Rozas Huacho
  • #10: DAI - Ing. Arturo Rozas Huacho
  • #11: DAI - Ing. Arturo Rozas Huacho
  • #12: DAI - Ing. Arturo Rozas Huacho
  • #13: DAI - Ing. Arturo Rozas Huacho
  • #14: DAI - Ing. Arturo Rozas Huacho
  • #15: DAI - Ing. Arturo Rozas Huacho
  • #16: DAI - Ing. Arturo Rozas Huacho
  • #17: DAI - Ing. Arturo Rozas Huacho