Ayuda necesito realizar este problema pero creo que es muy dificil
Publicado por eudyth (2 intervenciones) el 31/05/2017 02:49:18
Este es el problema les agradeceria que me ayudaran
Cree la Base de datos Banco. Agregue las tablas Cuenta y Movimiento
CREATE DATABASE BANCO
USE BANCO
CREATE TABLE CUENTA(
NUMERO CHAR (20) PRIMARY KEY,
[FECHA APER] DATETIME NOT NULL,
[MONTO APER] DECIMAL (12,2) NOT NULL,
SALDO DECIMAL (14,2))
CREATE TABLE MOVIMIENTO(
[NUMERO CTA] CHAR (20) REFERENCES CUENTA NOT NULL,
[NUMERO MOV] CHAR (7) NOT NULL,
FECHA DATETIME NOT NULL,
[TIPO MOV] CHAR (2) NOT NULL CHECK ([TIPO MOV] IN ('DE','NC','TR','RE','ND','TE')),
MONTO DECIMAL (12,2) NOT NULL,
CHECK ([NUMERO MOV] LIKE '0[1-9][0-9][0-9][0-9][0-9][0-9]' OR [NUMERO MOV] LIKE '1[012][0-9][0-9][0-9][0-9][0-9]'),
PRIMARY KEY ([NUMERO CTA],[NUMERO MOV])
)
Transcriba y ejecute el código para crear el procedimiento NumeroMovimiento el cual determina el número de movimiento del próximo movimiento a agregar de una cuenta
CREATE PROCEDURE NumeroMovimiento
@NUMCTA CHAR(20),
@NUMMOV CHAR(7) OUTPUT
AS
DECLARE @NUMBAS CHAR(4), @CNUM CHAR(3), @INUM INT ,@ULTNUMMOV CHAR(7)
DECLARE @IMES INT, @CMES CHAR(2), @IAÑO INT, @CAÑO CHAR(4)
SET @IMES = MONTH(GETDATE())
SET @IAÑO = YEAR (GETDATE())
SET @CAÑO = CONVERT (CHAR(4),@IAÑO)
IF @IMES < 10
SET @CMES = '0' + CONVERT (CHAR(1),@IMES)
ELSE
SET @CMES = CONVERT (CHAR(2),@IMES)
SET @NUMBAS = @CMES + SUBSTRING(@CAÑO,3,2)
IF EXISTS (SELECT * FROM MOVIMIENTO WHERE [NUMERO CTA] = @NUMCTA AND SUBSTRING([NUMERO MOV],1,4)= @NUMBAS)
BEGIN
SET @ULTNUMMOV = (SELECT TOP 1 [NUMERO MOV] FROM MOVIMIENTO WHERE [NUMERO CTA] = @NUMCTA AND SUBSTRING([NUMERO MOV],1,4)= @NUMBAS ORDER BY [NUMERO MOV] DESC)
SET @CNUM = SUBSTRING(@ULTNUMMOV,5,3)
SET @INUM = @CNUM + 1
IF @INUM < 10
SET @CNUM = '00'+CONVERT (CHAR(1),@INUM)
IF @INUM BETWEEN 10 AND 99
SET @CNUM = '0'+CONVERT (CHAR(2),@INUM)
IF @INUM >=100
SET @CNUM = CONVERT (CHAR(3),@INUM)
SET @NUMMOV = @NUMBAS + @CNUM
END
ELSE
BEGIN
SET @NUMMOV = @NUMBAS + '001'
END
Lo de abajo es lo que tengo que resolver
La fecha de apertura de una cuenta y la fecha de un movimiento es la fecha del sistema
1. Cree el trigger ActualizarSaldo en la tabla Movimiento el cual se ejecutará cuando se inserte un movimiento en dicha tabla.
Si una Cuenta tiene un solo movimiento registrado el trigger debe actualizar el saldo de la cuenta con el monto del movimiento
De lo contrario
Si el tipo de movimiento es DE, TR o NC el saldo de la cuenta aumenta en el monto del movimiento
De lo contrario el saldo de la cuenta disminuye en el monto del movimiento
2. Cree el trigger PrimerMovimiento en la tabla Cuenta que se dispare cuando se inserte una cuenta en dicha tabla. El trigger PrimerMovimiento inserta en la tabla Movimiento el movimiento número MMYY001 (MM mes actual, YY año actual) de la cuenta insertada, tipo DE (Depósito) cuyo monto es el monto de apertura.
3. Cree el procedimiento almacenado RegistrarMovimiento el cual recibe el numero de una cuenta, el tipo de movimiento ('DE','NC','TR','RE','ND','TE') y el monto
Si existe la cuenta
Ejecuta el procedimiento NumeroMovimiento
Busca el saldo de la cuenta
Si el tipo de movimiento es ('RE','TE') y el saldo de la cuenta es menor que el monto del movimiento, muestra el mensaje 'SALDO INSUFICIENTE'
De lo contrario inserta el movimiento en la tabla Movimiento
De lo contrario muestra el mensaje 'CUENTA NO REGISTRADA'
Cree la Base de datos Banco. Agregue las tablas Cuenta y Movimiento
CREATE DATABASE BANCO
USE BANCO
CREATE TABLE CUENTA(
NUMERO CHAR (20) PRIMARY KEY,
[FECHA APER] DATETIME NOT NULL,
[MONTO APER] DECIMAL (12,2) NOT NULL,
SALDO DECIMAL (14,2))
CREATE TABLE MOVIMIENTO(
[NUMERO CTA] CHAR (20) REFERENCES CUENTA NOT NULL,
[NUMERO MOV] CHAR (7) NOT NULL,
FECHA DATETIME NOT NULL,
[TIPO MOV] CHAR (2) NOT NULL CHECK ([TIPO MOV] IN ('DE','NC','TR','RE','ND','TE')),
MONTO DECIMAL (12,2) NOT NULL,
CHECK ([NUMERO MOV] LIKE '0[1-9][0-9][0-9][0-9][0-9][0-9]' OR [NUMERO MOV] LIKE '1[012][0-9][0-9][0-9][0-9][0-9]'),
PRIMARY KEY ([NUMERO CTA],[NUMERO MOV])
)
Transcriba y ejecute el código para crear el procedimiento NumeroMovimiento el cual determina el número de movimiento del próximo movimiento a agregar de una cuenta
CREATE PROCEDURE NumeroMovimiento
@NUMCTA CHAR(20),
@NUMMOV CHAR(7) OUTPUT
AS
DECLARE @NUMBAS CHAR(4), @CNUM CHAR(3), @INUM INT ,@ULTNUMMOV CHAR(7)
DECLARE @IMES INT, @CMES CHAR(2), @IAÑO INT, @CAÑO CHAR(4)
SET @IMES = MONTH(GETDATE())
SET @IAÑO = YEAR (GETDATE())
SET @CAÑO = CONVERT (CHAR(4),@IAÑO)
IF @IMES < 10
SET @CMES = '0' + CONVERT (CHAR(1),@IMES)
ELSE
SET @CMES = CONVERT (CHAR(2),@IMES)
SET @NUMBAS = @CMES + SUBSTRING(@CAÑO,3,2)
IF EXISTS (SELECT * FROM MOVIMIENTO WHERE [NUMERO CTA] = @NUMCTA AND SUBSTRING([NUMERO MOV],1,4)= @NUMBAS)
BEGIN
SET @ULTNUMMOV = (SELECT TOP 1 [NUMERO MOV] FROM MOVIMIENTO WHERE [NUMERO CTA] = @NUMCTA AND SUBSTRING([NUMERO MOV],1,4)= @NUMBAS ORDER BY [NUMERO MOV] DESC)
SET @CNUM = SUBSTRING(@ULTNUMMOV,5,3)
SET @INUM = @CNUM + 1
IF @INUM < 10
SET @CNUM = '00'+CONVERT (CHAR(1),@INUM)
IF @INUM BETWEEN 10 AND 99
SET @CNUM = '0'+CONVERT (CHAR(2),@INUM)
IF @INUM >=100
SET @CNUM = CONVERT (CHAR(3),@INUM)
SET @NUMMOV = @NUMBAS + @CNUM
END
ELSE
BEGIN
SET @NUMMOV = @NUMBAS + '001'
END
Lo de abajo es lo que tengo que resolver
La fecha de apertura de una cuenta y la fecha de un movimiento es la fecha del sistema
1. Cree el trigger ActualizarSaldo en la tabla Movimiento el cual se ejecutará cuando se inserte un movimiento en dicha tabla.
Si una Cuenta tiene un solo movimiento registrado el trigger debe actualizar el saldo de la cuenta con el monto del movimiento
De lo contrario
Si el tipo de movimiento es DE, TR o NC el saldo de la cuenta aumenta en el monto del movimiento
De lo contrario el saldo de la cuenta disminuye en el monto del movimiento
2. Cree el trigger PrimerMovimiento en la tabla Cuenta que se dispare cuando se inserte una cuenta en dicha tabla. El trigger PrimerMovimiento inserta en la tabla Movimiento el movimiento número MMYY001 (MM mes actual, YY año actual) de la cuenta insertada, tipo DE (Depósito) cuyo monto es el monto de apertura.
3. Cree el procedimiento almacenado RegistrarMovimiento el cual recibe el numero de una cuenta, el tipo de movimiento ('DE','NC','TR','RE','ND','TE') y el monto
Si existe la cuenta
Ejecuta el procedimiento NumeroMovimiento
Busca el saldo de la cuenta
Si el tipo de movimiento es ('RE','TE') y el saldo de la cuenta es menor que el monto del movimiento, muestra el mensaje 'SALDO INSUFICIENTE'
De lo contrario inserta el movimiento en la tabla Movimiento
De lo contrario muestra el mensaje 'CUENTA NO REGISTRADA'
Valora esta pregunta


0