Columnas

Restricciones

Permisos

Estad韘ticas

Disparadores

Dependencias

Detalles

Particiones

蚽dices


COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS
CLIENTEID NUMBER No null 1 null
ISINID CHAR(12 BYTE) No null 2 null
VALORCOTIZACIONULT NUMBER No null 3 null
FECHACOTIZACIONULT DATE No null 4 null
IMPORTE NUMBER No null 5 null
CANTIDAD NUMBER No null 6 null
CANTIDADPENDIENTEVENTA NUMBER No null 7 null
CONSTRAINT_NAME CONSTRAINT_TYPE SEARCH_CONDITION R_OWNER R_TABLE_NAME R_CONSTRAINT_NAME DELETE_RULE STATUS DEFERRABLE VALIDATED GENERATED BAD RELY LAST_CHANGE INDEX_OWNER INDEX_NAME INVALID VIEW_RELATED
SITUACIONCARTERA_PK Primary_Key null null null null null ENABLED NOT DEFERRABLE VALIDATED USER NAME null null 11/06/15 null SITUACIONCARTERA_PK null null
SYS_C0022795 Check "CLIENTEID" IS NOT NULL null null null null ENABLED NOT DEFERRABLE VALIDATED GENERATED NAME null null 11/06/15 null null null null
SYS_C0022796 Check "ISINID" IS NOT NULL null null null null ENABLED NOT DEFERRABLE VALIDATED GENERATED NAME null null 11/06/15 null null null null
SYS_C0022797 Check "VALORCOTIZACIONULT" IS NOT NULL null null null null ENABLED NOT DEFERRABLE VALIDATED GENERATED NAME null null 11/06/15 null null null null
SYS_C0022798 Check "FECHACOTIZACIONULT" IS NOT NULL null null null null ENABLED NOT DEFERRABLE VALIDATED GENERATED NAME null null 11/06/15 null null null null
SYS_C0022799 Check "IMPORTE" IS NOT NULL null null null null ENABLED NOT DEFERRABLE VALIDATED GENERATED NAME null null 11/06/15 null null null null
SYS_C0022800 Check "CANTIDAD" IS NOT NULL null null null null ENABLED NOT DEFERRABLE VALIDATED GENERATED NAME null null 11/06/15 null null null null
SYS_C0022801 Check "CANTIDADPENDIENTEVENTA" IS NOT NULL null null null null ENABLED NOT DEFERRABLE VALIDATED GENERATED NAME null null 11/06/15 null null null null



Columnas


COLUMN_NAME COLUMN_POSITION
CLIENTEID 1
ISINID 2
COLUMN_NAME COLUMN_POSITION
CLIENTEID null
COLUMN_NAME COLUMN_POSITION
ISINID null
COLUMN_NAME COLUMN_POSITION
VALORCOTIZACIONULT null
COLUMN_NAME COLUMN_POSITION
FECHACOTIZACIONULT null
COLUMN_NAME COLUMN_POSITION
IMPORTE null
COLUMN_NAME COLUMN_POSITION
CANTIDAD null
COLUMN_NAME COLUMN_POSITION
CANTIDADPENDIENTEVENTA null
PRIVILEGE GRANTEE GRANTABLE GRANTOR OBJECT_NAME
NAME VALUE
NUM_ROWS null
BLOCKS null
AVG_ROW_LEN null
SAMPLE_SIZE null
LAST_ANALYZED null
LAST_ANALYZED_SINCE null



Estad韘ticas de Columna


TRIGGER_NAME TRIGGER_TYPE TRIGGER_OWNER TRIGGERING_EVENT STATUS TABLE_NAME
UPDSITUACIONCARTERA AFTER EACH ROW CARTERAINVERSION_USER UPDATE ENABLED SITUACIONCARTERA




TRIGGER UPDSITUACIONCARTERA
AFTER UPDATE  ON SITUACIONCARTERA
FOR EACH ROW
DECLARE
valor 						NUMBER;
valorMes     				NUMBER;
vANO 						NUMBER;
vMes 						NUMBER;
vANOAnterior 				NUMBER;
vMesAnterior				NUMBER;
existe						NUMBER;
vClienteId					NUMBER;
vNombre						VARCHAR2(150);
vValorCarteraInversiones	NUMBER;
newValorCarteraInversiones	NUMBER;
oldValorCarteraInversiones	NUMBER;
vISINId						CHAR(12);
vTicker						VARCHAR2(10);
vTickerDescripcion			VARCHAR2(100);
vVolumenNegociacion			NUMBER;
RSP  						VARCHAR2(50);
BEGIN

/* Se actualiza el valor cartera inversiones de la tabla cliente con el diferencial
	- entre el diferencial de la cantidad anterior y la nueva cantidad.
	- entre el valor de cotizaci贸n anterior y el nuevo valor */

	newValorCarteraInversiones := 0;
	oldValorCarteraInversiones := 0;
IF((:new.cantidad <>  :old.cantidad ) OR (:new.ValorCotizacionUlt <> :old.ValorCotizacionUlt)) THEN

	SELECT ValorCarteraInversiones INTO oldValorCarteraInversiones
	FROM Cliente
	WHERE ClienteId = :new.ClienteId;

	valor := (:new.cantidad * :new.ValorCotizacionUlt)- (:old.cantidad * :old.ValorCotizacionUlt) ;
	update Cliente
	set ValorCarteraInversiones =  ValorCarteraInversiones+valor
    where ClienteId = :new.ClienteId;

	SELECT ValorCarteraInversiones INTO newValorCarteraInversiones
	FROM Cliente
	WHERE ClienteId = :new.ClienteId;


	SELECT ValorCarteraInversiones, ClienteId, Nombre INTO vValorCarteraInversiones, vClienteId, vNombre
	FROM (SELECT ValorCarteraInversiones, ClienteId, Nombre
		  FROM Cliente
		  ORDER BY ValorCarteraInversiones DESC)
	WHERE ROWNUM = 1;

	/* La operaci贸n UPSERT actualiza o inserta una fila en una tabla,
	dependiendo de si la tabla ya tiene una fila que coincide con los
	datos.
	Ya que Oracle no tiene una declaraci贸n espec铆fica de UPSERT,
	utilizaremos la declaraci贸n "merge" que fusiona los datos
	entre dos tablas. Uso DUAL nos permite utilizar este comando. */

	merge into Est_3_MayorCarteraCliente m
	using dual on (Id = 1)
	when not matched then
	insert (Id,ClienteId, Nombre, ValorCarteraInversiones)
		values (1, vClienteId, vNombre, vValorCarteraInversiones)
	when matched then
	update set 	ClienteId = vClienteId,
				Nombre = vNombre,
				ValorCarteraInversiones = vValorCarteraInversiones;
END IF ;

/* 	Se actualiza el volumen de negociaci贸n de la acci贸n.
	Se tiene en cuenta el diferencial de la cantidad anterior
	respecto a la nueva cantidad en valor absoluto.*/

IF (:new.cantidad <>  :old.cantidad ) THEN
	valor := ABS((:new.cantidad )- (:old.cantidad )) ;
	update Accion set VolumenNegociacion =  VolumenNegociacion+valor
    where ISINId = :new.ISINId;


	SELECT ISINId,Ticker, VolumenNegociacion, TickerDescripcion INTO vISINId, vTicker, vVolumenNegociacion, vTickerDescripcion
	FROM (SELECT ISINId,Ticker, VolumenNegociacion, TickerDescripcion
		  FROM Accion
		  ORDER BY VOLUMENNEGOCIACION DESC)
	WHERE ROWNUM = 1;

	/* La operaci贸n UPSERT actualiza o inserta una fila en una tabla,
	dependiendo de si la tabla ya tiene una fila que coincide con los
	datos.
	Ya que Oracle no tiene una declaraci贸n espec铆fica de UPSERT,
	utilizaremos la declaraci脙鲁n "merge" que fusiona los datos
	entre dos tablas. Uso DUAL nos permite utilizar este comando. */

	merge into Est_4_MayorVolumenAccion m
	using dual on (Id = 1)
	when not matched then
	insert (Id,ISINId, Ticker, VolumenNegociacion, TickerDescripcion)
		values (1, vISINId, vTicker, vVolumenNegociacion, vTickerDescripcion)
	when matched then
	update set 	ISINId = vISINId,
				Ticker = vTicker,
				VolumenNegociacion = vVolumenNegociacion,
				TickerDescripcion = vTickerDescripcion;

END IF ;

/* Se actualiza la cantidad pendiente de venta de la acci贸n.
	Se tiene en cuenta el diferencial de la cantidad pendiente anterior
	respecto a la nueva cantidad pendiente. */
IF (:new.CantidadPendienteVenta <>  :old.CantidadPendienteVenta ) THEN
 valor := (:new.CantidadPendienteVenta )- (:old.CantidadPendienteVenta ) ;
 update Accion set NumeroAccionesDisponibles =  NumeroAccionesDisponibles + valor
    where ISINId = :new.ISINId;
END IF ;

/* Si se produce un cambio de mes se generara ClienteHistorico   */
IF (:new.FechaCotizacionUlt  <>  :old.FechaCotizacionUlt ) THEN
 vANO := EXTRACT(YEAR FROM :new.FechaCotizacionUlt);
 vMes := EXTRACT(MONTH FROM :new.FechaCotizacionUlt);

 SELECT count(*) INTO existe
	FROM ClienteHistorico
	WHERE ClienteId = :new.ClienteId;
	IF (existe = 0) THEN /* La primera vez se carga los dos valores iguales */
	oldValorCarteraInversiones:= newValorCarteraInversiones;
	END IF;

SELECT count(*) INTO existe
	FROM ClienteHistorico
	WHERE ANO = vANO AND
		  Mes = vMes AND
		  ClienteId = :new.ClienteId;

	IF (existe = 0) THEN /* se genera el nuevo registro del mes */
		/* miramos que exista el mes anterior */
		vANOAnterior := vANO;
		vMesAnterior := vmes -1;
		IF (vMesAnterior = 0) THEN
			vMesAnterior := 12;
			vANOAnterior := vANO - 1;
		END IF;

		SELECT count(*) INTO existe
		FROM ClienteHistorico
		WHERE ANO = vANOAnterior AND
			  Mes = vMesAnterior AND
			  ClienteId = :new.ClienteId ;

		IF (existe > 0) THEN
		/* Si existe recogemos el valor final del mes anterior */
			SELECT  IMPORTEFINAL INTO  valorMes
			  FROM ClienteHistorico
			  WHERE ANO = vANOAnterior AND
				Mes = vMesAnterior AND
				ClienteId = :new.ClienteId ;
			oldValorCarteraInversiones:= valorMes;
		END IF;
		/* En este punto oldValorCarteraInversiones tendra el valor
		   de newValorCarteraInversiones si es la primera vez que se carga este cliente
		   o bien tendra el valor ImporteFinal del mes anterior.		*/
		GestionTest.ins_ClienteHistorico(:new.ClienteId, vMes, vANO, oldValorCarteraInversiones, newValorCarteraInversiones, RSP );
	ELSE
	/* Durante el mes se actualiza el valor en ImporteFinal*/
		SELECT  IMPORTEINICIAL INTO  valorMes
		FROM ClienteHistorico
		WHERE ANO = vANO AND
			  Mes = vMes AND
			  ClienteId = :new.ClienteId ;
		GestionTest.upd_ClienteHistorico(:new.ClienteId, vMes, vANO, valorMes, newValorCarteraInversiones, RSP );

	END IF;

END IF;
END;
OWNER NAME TYPE REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE
CARTERAINVERSION_USER GESTIONTEST PACKAGE BODY CARTERAINVERSION_USER SITUACIONCARTERA TABLE
CARTERAINVERSION_USER UPDSITUACIONCARTERA TRIGGER CARTERAINVERSION_USER SITUACIONCARTERA TABLE
CARTERAINVERSION_USER INSACCIONHISTORICO TRIGGER CARTERAINVERSION_USER SITUACIONCARTERA TABLE



Referencias


OWNER NAME TYPE REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE
OWNER NAME TYPE REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE
OWNER NAME TYPE REFERENCED_OWNER REFERENCED_NAME REFERENCED_TYPE
NAME VALUE
CREATED 11/06/15
LAST_DDL_TIME 11/06/15
OWNER CARTERAINVERSION_USER
TABLE_NAME SITUACIONCARTERA
TABLESPACE_NAME CARTERAINVERSION
CLUSTER_NAME null
IOT_NAME null
STATUS VALID
PCT_FREE 10
PCT_USED null
INI_TRANS 1
MAX_TRANS 255
INITIAL_EXTENT 65536
NEXT_EXTENT 1048576
MIN_EXTENTS 1
MAX_EXTENTS 2147483645
PCT_INCREASE null
FREELISTS null
FREELIST_GROUPS null
LOGGING YES
BACKED_UP N
NUM_ROWS null
BLOCKS null
EMPTY_BLOCKS null
AVG_SPACE null
CHAIN_CNT null
AVG_ROW_LEN null
AVG_SPACE_FREELIST_BLOCKS null
NUM_FREELIST_BLOCKS null
DEGREE 1
INSTANCES 1
CACHE N
TABLE_LOCK ENABLED
SAMPLE_SIZE null
LAST_ANALYZED null
PARTITIONED NO
IOT_TYPE null
OBJECT_ID_TYPE null
TABLE_TYPE_OWNER null
TABLE_TYPE null
TEMPORARY N
SECONDARY N
NESTED NO
BUFFER_POOL DEFAULT
ROW_MOVEMENT DISABLED
GLOBAL_STATS NO
USER_STATS NO
DURATION null
SKIP_CORRUPT DISABLED
MONITORING YES
CLUSTER_OWNER null
DEPENDENCIES DISABLED
COMPRESSION DISABLED
COMPRESS_FOR null
DROPPED NO
COMMENTS null
PARTITION_NAME LAST_ANALYZED NUM_ROWS BLOCKS SAMPLE_SIZE HIGH_VALUE




INDEX_OWNER INDEX_NAME UNIQUENESS STATUS INDEX_TYPE TEMPORARY PARTITIONED FUNCIDX_STATUS JOIN_INDEX COLUMNS COLUMN_EXPRESSION
CARTERAINVERSION_USER SITUACIONCARTERA_PK UNIQUE VALID NORMAL N NO null NO CLIENTEID, ISINID null




INDEX_OWNER INDEX_NAME TABLE_OWNER TABLE_NAME COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH CHAR_LENGTH DESCEND
CARTERAINVERSION_USER SITUACIONCARTERA_PK CARTERAINVERSION_USER SITUACIONCARTERA CLIENTEID 1 22 0 ASC
CARTERAINVERSION_USER SITUACIONCARTERA_PK CARTERAINVERSION_USER SITUACIONCARTERA ISINID 2 12 12 ASC