Pular para o conteúdo

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

#90123
vieira
Participante

    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;