› Fóruns › SQL e PL/SQL › ORA-06502: PL/SQL: numeric or value error: character string › ORA-06502: PL/SQL: numeric or value error: character string
OPA, criei outra tabela porque aki no trampo eh embaçado mudar a estrutura da tabela, mas enfim, mudou o erro pelomenos…
ORA-00060: deadlock detected while waiting for resource
ORA-06512: at "EFOOD_APETECE.TGR_GERACODSERVICO", line 48
ORA-04088: error during execution of trigger 'EFOOD_APETECE.TGR_GERACODSERVICO'
Como estou indo embora, amanha irei procurar sobre ele no google, caso alguem saiba como me ajudar, agradeço, abaixo segue trigger atualizada ok!… Valew ai até agora …
CREATE OR REPLACE TRIGGER tgr_GeraCodServico
BEFORE INSERT OR UPDATE
ON CADMAT
REFERENCING NEW AS novo_campo
FOR EACH ROW
DECLARE
Pragma Autonomous_Transaction;
V_COD_CADMAT CADMAT.cod_mat_cadmat%TYPE;
V_DESCR_TABCAR CADMAT.DESCR_MAT_CADMAT%TYPE;
V_COD_ICMS CADMAT.COD_ICMS_RET_CADMAT%TYPE;
V_NEW_VALUE CADMAT.COD_ICMS_RET_CADMAT%TYPE;
BEGIN
SELECT COD_MAT_CADMAT, DESCR_MAT_CADMAT, COD_ICMS_RET_CADMAT
INTO V_COD_CADMAT, V_DESCR_TABCAR, V_COD_ICMS
FROM CADMAT
WHERE COD_MAT_CADMAT = :novo_campo.COD_MAT_CADMAT;
SELECT CASE
WHEN MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 33 AND (MAX( ASCII(SUBSTR (COD_TABCAR,2,3)))) = 125 THEN CHR(MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) + 2 ) || CHR ( MAX(ASCII(SUBSTR (COD_TABCAR,2,3))))
WHEN MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 33 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) = 35 AND MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 35 AND MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) < 38 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) < 125 THEN CHR(MAX( ASCII(SUBSTR (COD_TABCAR,0,2)))) || CHR(MAX( ASCII(SUBSTR (COD_TABCAR,2,3)) + 1))
WHEN MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 38 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) = 125 THEN CHR(MAX( ASCII(SUBSTR (COD_TABCAR,0,2)))) || CHR(MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) + 2)
WHEN MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 38 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) = 40 AND MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 40 AND MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) < 93 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) = 40 AND MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 93 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) = 125 THEN CHR(MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) + 2) || CHR(MAX( ASCII(SUBSTR (COD_TABCAR,2,3))))
WHEN MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) >= 40 AND MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) < 93 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) < 125 THEN CHR(MAX( ASCII(SUBSTR (COD_TABCAR,0,2)))) || CHR(MAX(ASCII(SUBSTR (COD_TABCAR,2,3))) + 1)
WHEN MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 95 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) = 125 THEN CHR(MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) + 2 ) || CHR(MAX( ASCII(SUBSTR (COD_TABCAR,2,3))))
WHEN MAX( ASCII(SUBSTR (COD_TABCAR,0,2))) = 95 AND MAX( ASCII(SUBSTR (COD_TABCAR,2,3))) = 97 AND MAX(ASCII(SUBSTR (COD_TABCAR,0,2))) = 97 AND MAX(ASCII(SUBSTR (COD_TABCAR,0,2))) < 125 AND MAX(ASCII(SUBSTR(COD_TABCAR,2,3))) < 125 THEN CHR(MAX(ASCII(SUBSTR(COD_TABCAR,0,2)))) || CHR(MAX(ASCII(SUBSTR (COD_TABCAR,2,3))) + 1)
END COD_TABCAR INTO V_NEW_VALUE FROM TABCAR;
IF V_COD_ICMS = ' ' THEN
INSERT INTO TABCAR_DUMMY VALUES(V_NEW_VALUE , V_DESCR_TABCAR);
UPDATE CADMAT SET COD_ICMS_RET_CADMAT = V_NEW_VALUE WHERE COD_MAT_CADMAT = V_COD_CADMAT;
END IF ;
commit;
END tgr_GeraCodServico;