SQL Error: ORA-01422: a extração exata retorna mais do que o número solicitado de linhas
ORA-06512: em "PROJE.TRG_TAGVALUE_CONTROLE_INS", line 6
ORA-04088: erro durante a execução do gatilho 'PROJE.TRG_TAGVALUE_CONTROLE_INS'
01422. 00000 - "exact fetch returns more than requested number of rows"
*Cause: The number specified in exact fetch is less than the rows returned.
*Action: Rewrite the query or change number of rows requested
create or replace
TRIGGER TRG_TAGVALUE_CONTROLE_INS
AFTER INSERT
ON POC_TAGVALUE
FOR EACH ROW
DECLARE
ID_CONTR_SEQ NUMBER;
BEGIN
IF :new.NM_COLUN = 'NM_TAGPA' THEN
SELECT ID_CONTR INTO ID_CONTR_SEQ
FROM POC_CONTROLE
WHERE DT_FINAL IS NULL AND
FL_TIPO = 'P' AND
NM_TAG = :new.NM_TAG AND
ID_EQUIP = :new.ID_EQUIP AND
ID_CENTR = :new.ID_CENTR AND
ID_GRUPO = :new.ID_GRUPO;
IF (ID_CONTR_SEQ IS NULL AND :new.VL_TAG = 0) THEN
-- PEGAR NUMERO SEQUENCE
SELECT SEQ_ID_CONTR.NEXTVAL INTO ID_CONTR_SEQ FROM dual;
-- INSERE NOVO CONTROLE
INSERT INTO POC_CONTROLE
( ID_CONTR,
ID_EQUIP,
ID_CENTR,
ID_GRUPO,
DT_INICI,
FL_TIPO,
VL_PERDA,
NM_TAG
) VALUES (
ID_CONTR_SEQ,
:new.ID_EQUIP,
:new.ID_CENTR,
:new.ID_GRUPO,
:new.DT_TAG_VALUE,
'P',
0,
:new.NM_TAG
);
ELSE
-- ATUALIZA TABELA CONTROLE
UPDATE POC_CONTROLE SET DT_FINAL = :new.DT_TAG_VALUE
WHERE ID_CONTR = ID_CONTR_SEQ;
END IF;
END IF;
IF :new.NM_COLUN = 'NM_TAGPE' THEN
INSERT INTO POC_CONTROLE
( ID_CONTR,
ID_EQUIP,
ID_CENTR,
ID_GRUPO,
DT_INICI,
FL_TIPO,
VL_PERDA,
NM_TAG
) VALUES (
ID_CONTR_SEQ,
:new.ID_EQUIP,
:new.ID_CENTR,
:new.ID_GRUPO,
:new.DT_TAG_VALUE,
'R',
:new.VL_TAG,
:new.NM_TAG
);
END IF;
END;
INSERT INTO TAB_TAGVALUE
(ID_EQUIP,
ID_GRUPO,
ID_CENTR,
DT_TAG_INTER,
DT_TAG_VALUE,
NM_TAG,
VL_TAG,
NM_COLUN
) VALUES
('MP09',
'GR1',
'WK1',
SYSDATE,
SYSDATE,
'Line1Status',
1000,
'NM_TAGPA');
Danilo