Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Stored Procedure para registrar prestamos segun limite de credito

Estas en el tema de Stored Procedure para registrar prestamos segun limite de credito en el foro de SQL Server en Foros del Web. Saludos. Quisiera su ayuda en este procedimiento almacenado. Se me pide: Cita: En este proceso se debe controlar que el cliente no tome prestamos mas ...
  #1 (permalink)  
Antiguo 07/04/2011, 15:47
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Stored Procedure para registrar prestamos segun limite de credito

Saludos. Quisiera su ayuda en este procedimiento almacenado. Se me pide:

Cita:
En este proceso se debe controlar que el cliente no tome prestamos mas alla de su limite de credito. Eje: si el limite es 100, los prestamos no debe pasar de este monto.
Y no tengo ni idea de como hacer eso. Se me dan dos tablas, cliente y prestamos. En la cliente, está la columna "Limite de credito". Debo hacer un stored procedure en ambas tablas. En la tabla de prestamos, debo...

Cita:
...controlar que el cliente no tome prestamos mas alla de su limite de credito. Eje: si el limite es 100, los prestamos no debe pasar de este monto.
Si alguien me pudiera ayudar se lo agradeceria. Estoy trabajando en Microsoft SQL Server. Gracias
  #2 (permalink)  
Antiguo 07/04/2011, 15:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde PHP a SQL Server
  #3 (permalink)  
Antiguo 07/04/2011, 16:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

¿Algun trabajo escolar?
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 08/04/2011, 05:48
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

Cita:
Iniciado por iislas Ver Mensaje
¿Algun trabajo escolar?
Si. El problema es que no tengo idea de como se resuelve. Me gustaria que por lo menos alguien me orientara.
  #5 (permalink)  
Antiguo 08/04/2011, 09:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

El problema esta en que en los foros se resuelven dudas puntuales, no acostumbramos dar asesorias a estudiantes, si haces un esfuerzo y nos planteas el avance de tu query, con gusto te ayudamos, pero no vamos a hacer tu tarea.
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 08/04/2011, 10:30
 
Fecha de Ingreso: junio-2006
Mensajes: 109
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

Curso de SQL


Suerte
  #7 (permalink)  
Antiguo 08/04/2011, 16:55
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

El Banco XYZ necesita poder registrar en cartera de clientes los siguientes datos:
a. Identificacion personal – CEDULA, PASAPORTE, LICENCIA DE CONDUCIR, OTRO
b. Nombre
c. Apellido
d. Direccion
e. Telefono cellular
f. Telefono Casa
g. Telefono Oficina
h. Limite de credito – cuanto el cliente puede tomar prestado

Registrar prestamos para los clientes con la siguiente informacion:
a. Identificacion personal cliente
b. Numero de prestamo
c. Fecha de solicitud
d. Monto solicitado
e. Fecha de desembolso
f. Monto aprobado
g. Balance
h. Tipo de credito – CONSUMO, COMERCIAL,HIPOTECARIO
i. Plazo
j. Tasa
k. Dia de pago
TAREAS A REALIZAR

 Crear script Stored procedure y script
Cita:
En este proceso se debe controlar que el cliente no tome prestamos mas alla de su limite de credito. Eje: si el limite es 100, los prestamos no debe pasar de este monto.

Yo he creado la tabla y el stored procedure que permite que se ingresen los datos en la tabla cliente y en la de prestamos. Me gustaria orientacion, si alguien, sabe, a que se puede estar refiriendo el ultimo mandato.

(El enlace del Curso de SQL no contiene nada)
  #8 (permalink)  
Antiguo 11/04/2011, 22:44
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

muéstranos tus tablas, para saber si vas por buen camino y tal ves encaminarte un poco.
  #9 (permalink)  
Antiguo 11/04/2011, 22:57
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

Gracias Josh_pa por tu disposicion para ayudar. En realidad, lo que necesito es un poco de orientacion, porque no se como hacer nada, el profesor solo charlaba y nunca ponia ejercicios, luego deja una practica enorme que uno no tiene ni idea de como hacerla. Son muchas cosas que debo hacer con estos datos, pero aun no consigo la primera, que es:

En este proceso se debe controlar que el cliente no tome prestamos mas alla de su limite de credito. Eje: si el limite es 100, los prestamos no debe pasar de este monto.

Para eso me aconsejaron un trigger, y lei hasta que aprendi a hacer trigger, pero sospecho que es por eso que cuando inserto, el exec del procedimiento, me da error, pero si inserto de la forma normal, se ingresan bien los datos.

Muchas Gracias!!!!!

-- ************************************************** ***
--Creacion de Tabla Cliente

CREATE TABLE CLIENTE (
id_cliente int identity primary key,
nombre nvarchar (100),
apellido nvarchar (100),
direccion nvarchar (100),
tel_celular nvarchar (100),
tel_casa nvarchar (100),
tel_oficina nvarchar (100),
limite_credito int)

-- ************************************************** ************
--Poblar la Tabla Cliente

insert into cliente values ('Sterling', 'Diaz', 'C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000)

-- ************************************************** *********
--Procedimiento Almacenado para registrar datos en la tabla CLIENTE

CREATE PROCEDURE Procedimiento_cliente
@id_cliente int,
@nombre nvarchar (100),
@apellido nvarchar (100),
@direccion nvarchar (100),
@tel_celular nvarchar (100),
@tel_casa nvarchar (100),
@tel_oficina nvarchar (100),
@limite_credito int
AS
BEGIN TRANSACTION Reg_Cliente
BEGIN TRY
--Si el usuario existe, será actualizado
if exists (select id_cliente from CLIENTE where id_cliente = @id_cliente)
begin
print 'Este usario existe y será actualizado.'
update CLIENTE
set
/* id_cliente = @id_cliente, No se pone porque tiene un tipo de datos Identity*/
nombre = @nombre,
apellido = @apellido,
direccion = @direccion,
tel_celular = @tel_celular,
tel_casa = @tel_casa,
tel_oficina = @tel_oficina,
limite_credito = @limite_credito
where id_cliente = @id_cliente
print 'Usuario actualizado correctamente.'
end
--Si no existe, entonces se inserta por primera vez
else
begin
insert into cliente (Nombre,Apellido,Direccion,tel_celular,tel_casa,te l_oficina,
limite_credito)
values (@nombre,@apellido,@direccion,@tel_celular,@tel_ca sa,
@tel_oficina,@limite_credito)
print 'Usuario creado'
end
COMMIT TRAN Reg_Cliente
END TRY

BEGIN CATCH
print 'Ocurrió un error durante la transaccion: ' + ERROR_MESSAGE()
ROLLBACK TRAN Reg_Cliente
END CATCH

GO
/* Para que el query del stored procedure me funcione bien, tengo que correrlo, hasta aqui, por eso le puse go. */

BEGIN TRY
EXECUTE Procedimiento_cliente 'Sterling','Diaz','C/Mantesa A. #2','829-592-0579','809-537-3930','N/A',50000
END TRY

BEGIN CATCH
PRINT 'Ocurrió un error durante la transaccion: ' +ERROR_MESSAGE()
END CATCH

/* Este begin try y catch me da el siguiente error, que no tengo idea de por qué:
Ocurrió un error durante la transaccion: Error al convertir el tipo de datos varchar a int. */



-- ************************************************** *******
--Creacion de Tabla Prestamos

CREATE TABLE PRESTAMOS (
id_cliente int FOREIGN KEY REFERENCES cliente (id_cliente),
num_prestamo int IDENTITY PRIMARY KEY,
fecha_solicitud nvarchar (100),
monto_solicitado int,
fecha_desembolso nvarchar (100),
monto_aprobado int, /* No se permiten subconsultas aqui */
balance int,
tipo_credito nvarchar (100) check (tipo_credito in ('CONSUMO','COMERCIAL','HIPOTECARIO')),
plazo nvarchar (100),
dia_pago nvarchar (100))

-- ************************************************** ***********
--Poblar la tabla Prestamos

insert into prestamos (id_cliente,fecha_solicitud,monto_solicitado,fecha _desembolso,monto_aprobado,balance,tipo_credito,pl azo,dia_pago)
values (1,'01/01/2011',90000,'01/02/2011',90000,0,'CONSUMO','30','01/03/2011')

-- ************************************************** ********
--Procedimiento Almacenado para registrar datos en la tabla PRESTAMOS

CREATE PROCEDURE Procedimiento_Prestamo
@id_cliente nvarchar (100),
@num_prestamo int,
@fecha_solicitud nvarchar (100),
@monto_solicitado int,
@fecha_desembolso nvarchar (100),
@monto_aprobado int,
@balance int,
@tipo_credito nvarchar (100),
@plazo nvarchar (100),
@dia_pago nvarchar (100)

AS
BEGIN TRANSACTION Reg_Prestamo

BEGIN TRY
--Si el prestamo existe, será actualizado
if exists (select num_prestamo from prestamo where num_prestamo = @num_prestamo)
begin
print 'Este prestamo ya existe y será actualizado.'
--Actualiza el prestamo
update prestamos
set
id_cliente = @id_cliente,
/* num_prestamo = @num_prestamo, Al ser identity, no se puede actualizar */
fecha_solicitud = @fecha_solicitud,
monto_solicitado = @monto_solicitado,
fecha_desembolso = @fecha_desembolso,
monto_aprobado = (select limite_credito from cliente),
balance = @balance,
tipo_credito = @tipo_credito,
plazo = @plazo,
dia_pago = @dia_pago
where num_prestamo = @num_prestamo
print 'Prestamo actualizado correctamente.'
end
--Si no existe, entonces se inserta por primera vez
else
begin
SET IDENTITY_INSERT PRESTAMOS ON
insert into prestamos (id_cliente,fecha_solicitud,monto_solicitado,fecha _desembolso,monto_aprobado,balance,tipo_credito,pl azo,dia_pago)
values (@id_cliente,@fecha_solicitud,@monto_solicitado,@f echa_desembolso,@monto_aprobado,@balance,@tipo_cre dito,@plazo,@dia_pago)
print 'Prestamo Registrado'
end
COMMIT TRAN Reg_Prestamo
END TRY

BEGIN CATCH
PRINT 'Ocurrió un error durante la transaccion: ' +ERROR_MESSAGE()
END CATCH

/* No se por qué no se insertan los datos del Execute. Me da el mismo error que arriba*/

BEGIN TRY
EXECUTE Procedimiento_prestamo '01/01/2011',10000,'01/02/2011',300000,0,'Consumo','01/03/2011','01/03/2011','gv'
END TRY

BEGIN CATCH
print 'Ocurrió un error durante la transaccion: ' + ERROR_MESSAGE()
END CATCH
  #10 (permalink)  
Antiguo 02/05/2011, 23:44
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

perdon, me habi desconectado un rato, pero ya viendo tu logica y tu avance, me doy cuenta que:
en el primer error que te arroja es porque el SP Procedimiento_cliente tiene 8 parametros y solo le estas pasando 7, y viendo la consulta, te falta el primero @id_cliente.

Error al convertir el tipo de datos varchar a int.

y por esta razón también, el segundo error (Procedimiento_Prestamo) se genera.

ya analizado ese punto, lo que recomiendo es revisar cada SP y los datos pasados, si no tienes alguno no lo deberías de agregar a la lista de paramentos.

y crear varios SP que hagan las osas por separado, algo asi ;lo que esta en parentesis son datos a pasarle al SP;

un SP para verificar si existe el cliente (buscado por nombre , mejor por RFC [este campo se lo agregaria] )

un SP para insertar un nuevo cliente (todos los campos de la tabla de cliente)

un SP para actualizar el cliente (id_cliente y datos que pueden cambiar [obvio nombre, rfc no cambiarion])

un SP para verificar si existe el prestamo para el cliente (id_cliente)
un SP para agregar un prestamo para el cliente (id_cliente y datos del prestamo)
un SP para actualizar el prestamo para el cliente (id_prestamo y datos que puedan cambiar)


y listo

ahora :

Código cita:
Ver original
  1. ...controlar que el cliente no tome prestamos mas alla de su limite de credito. Eje: si el limite es 100, los prestamos no debe pasar de este monto.

lo que debes hacer en este punto es no revasar el limite de credito

osea limite_credito de tu tabla cliente, te indica cuanto es lo mas que le puedes prestar.
osea debes calcular cuanto dinero le tienes prestado y ver que no se pase antes de autorizarle otro prestamo.

esto lo haces en sql con la funcion sum()


espero aun te sirva y no haber llegado demasiado tarde.
  #11 (permalink)  
Antiguo 03/05/2011, 07:11
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Stored Procedure para registrar prestamos segun limite de credito

Gracias por tu ayuda, es muy util. Ya ha pasado el tiempo, pero esto quedara en el foro para otras personas que se encuentren con los problemas similares. Gracias!!!!

Etiquetas: php, procedure, sql, stored
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:14.