I have a variable, vTipoIdCompartido, reported that the name of a column. But it seems you can not do it that way because it gives me error 'ora-01733 virtual column not allowed here', every time I use it. Do I have to do differently?
create or replace PROCEDURE spCompartirPrestacion
(
pIdQuien IN PRESTACIONES.IDPRESTACION%TYPE,
pIdConQuien IN PRESTACIONES.IDPRESTACION%TYPE,
pTipo NUMBER
)
AS
vIdCompartidoQuien PRESTACIONES.IDCOMPARTIDOANUAL%TYPE := null;
vIdCompartidoConQuien PRESTACIONES.IDCOMPARTIDOEVENTO%TYPE := null;
vIdCompartido PRESTACIONES.IDCOMPARTIDOEVENTO%TYPE := null;
vTipoIdCompartido CHAR(20) := null;
BEGIN
IF pTipo = 0 THEN -- ANUAL
vTipoIdCompartido := 'IDCOMPARTIDOANUAL';
ELSE -- EVENTO
vTipoIdCompartido := 'IDCOMPARTIDOEVENTO';
END IF;
SELECT vTipoIdCompartido
INTO vIdCompartidoQuien
FROM PRESTACIONES
WHERE IDPRESTACION = pIdQuien;
SELECT vTipoIdCompartido
INTO vIdCompartidoConQuien
FROM PRESTACIONES
WHERE IDPRESTACION = pIdConQuien;
vIdCompartido := TO_NUMBER(to_char(systimestamp,'yyyyMMddHHmmssff'));
IF vIdCompartidoQuien = null AND vIdCompartidoConQuien = null THEN
UPDATE PRESTACIONES SET
vTipoIdCompartido = vIdCompartido,
ESTOPECOMPARTIDOANUAL = 1
WHERE IDPRESTACION = pIdQuien;
UPDATE PRESTACIONES SET
vTipoIdCompartido = vIdCompartido,
ESTOPECOMPARTIDOANUAL = 1
WHERE IDPRESTACION = pIdConQuien;
COMMIT;
RETURN;
END IF;
IF vIdCompartidoQuien != null OR vIdCompartidoConQuien != null THEN
IF vIdCompartidoQuien = null THEN
UPDATE PRESTACIONES SET
vTipoIdCompartido = vIdCompartidoConQuien,
ESTOPECOMPARTIDOANUAL = 1
WHERE IDPRESTACION = pIdQuien;
COMMIT;
RETURN;
END IF;
IF vIdCompartidoConQuien = null THEN
UPDATE PRESTACIONES SET
vTipoIdCompartido = vIdCompartidoQuien,
ESTOPECOMPARTIDOANUAL = 1
WHERE IDPRESTACION = pIdConQuien;
COMMIT;
RETURN;
END IF;
END IF;
IF vIdCompartidoQuien != null AND vIdCompartidoConQuien != null THEN
UPDATE PRESTACIONES SET
vTipoIdCompartido = vIdCompartidoConQuien,
ESTOPECOMPARTIDOANUAL = 1
WHERE IDPRESTACION = pIdQuien;
COMMIT;
RETURN;
END IF;
END spCompartirPrestacion;
CREATE TABLE "SERMECOOP"."PRESTACIONES"(
"IDPLAN" NUMBER(9,0) NOT NULL ENABLE,
"IDPRESTACION" NUMBER(9,0),
"IDBENEFICIO" NUMBER(9,0) NOT NULL ENABLE,
"BONIFICACION" NUMBER(9,0),
"CARENCIA" NUMBER(9,0),
"TOPEPOREVENTO" NUMBER(19,4),
"TOPEANUAL" NUMBER(19,4),
"SINTOPE" NUMBER(1,0) DEFAULT '0',
"ESTOPECOMPARTIDOEVENTO" NUMBER(1,0) DEFAULT '0',
"IDBENEFICIOPADRE" NUMBER(9,0),
"IDCATEGORIABENEFICIO" NUMBER(9,0),
"EXCEPCION" NUMBER(1,0) DEFAULT '0',
"IDPORCENTAJEEXCEPCION" NUMBER(9,4),
"IDBENEFICIOCOMPARTIDO" NUMBER(9,0),
"ESTOPECOMPARTIDOANUAL" NUMBER(1,0) DEFAULT '0',
"IDCOMPARTIDOANUAL" NUMBER(20,0),
"IDCOMPARTIDOEVENTO" NUMBER(20,0),
PRIMARY KEY ("IDPRESTACION"))