Jump to content

RAFAEL C D EMELO

Members
  • Content count

    9
  • Joined

  • Last visited

Community Reputation

0 Comum

About RAFAEL C D EMELO

  1. RAFAEL C D EMELO

    [Resolvido] Exception When Dup_Index_Val_On_Index Then Não Funciona

    galera consegui achar o erro no caso a tabela q eu estava fazerndo o insert ja tinha um PK com o mesmo nome entao como essa tabela eu so uso para inserir os dados eu deixei ela sem nenhuma pk e consegui inserir e evitar a insercao duplicada de toda forma obrigado e boa sorte a todos.
  2. Bom dia amigos, me deparei com um problema estou criando uma procedure que precisa criar uma PK em uma tabela ja existente e apos isso realizar um insert porem quando existe um dado duplicado por algum motive a exception DUP_VAL_ON_INDEX NAO FUNCIONA o insert funcionou mas quando testo uma situacao de duplicacao eu recebo um erro oracle 02260 e diz que a tabela somente pode ter uma PK porem a exception deveria tartar o erro , eu vou deixar o codigo a baixo par se alguem puder me ajudar isso desde ja agradeco a todos, CREATE OR REPLACE PROCEDURE MANUAL_CLIENT_INSERT_FIP AS Y_CONT NUMBER := 0; W_CONT NUMBER; BEGIN EXECUTE IMMEDIATE 'ALTER TABLE TEMP_FIP_CLIENT_HISTORIC ADD PRIMARY KEY (CLIENTKEY)'; FOR REG IN (SELECT LOADDATE, CLIENTKEY, CLIENTSEGMENT, CLIENTNAME, 'UK' AS COUNTRY, 'FIP' AS PROGRAM, 'TPL' AS COVERAGE FROM TEMP_FIP_CLIENT_HISTORIC ) LOOP BEGIN W_CONT := NVL(W_CONT, 0)+ 1; DBMS_OUTPUT.PUT_LINE('RECORDS' ||'-'|| W_CONT ||' '||REG.LOADDATE||' '||REG.CLIENTKEY||' '||REG.CLIENTSEGMENT||' '|| REG.CLIENTNAME||' '||'UK'||' '||'FIP'||' '||'TPL'); INSERT INTO GV_MANUAL_CLIENT(LOADDATE, CLIENTKEY, CLIENTSEGMENT, CLIENTNAME, COUNTRY, PROGRAM, COVERAGE ) VALUES (SYSDATE, REG.CLIENTKEY, REG.CLIENTSEGMENT, REG.CLIENTNAME, REG.COUNTRY, REG.PROGRAM, REG.COVERAGE); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE(W_CONT ||' '||'DUPLICATE KEY'); END; END LOOP; END;
  3. RAFAEL C D EMELO

    comparacao de campo varchar2 com data

    Opa boa tarde Motta de data pra string no caso [e um campo de data q preciso pegar so os digitos meses e transformer em varchar2, O CONTEUDO DO PREMIUMMONTH = meses mas em numerous tipo 1,2,3,4,5 mas foi criado em varchar2
  4. RAFAEL C D EMELO

    comparacao de campo varchar2 com data

    ola pessoal mais uma vez aqui pedindo ajuda !!!! estou com uma tarefa aparentemente simples mas estou travado na conversao dos dados alguem poderia me ajudar DECLARE V_YEAR VARCHAR2(10); V_MONTH VARCHAR2(10); V_PREMIUM_START DATE; V_PREMIUM_END DATE; V_END_MONTH DATE; BEGIN FOR REG IN ( SELECT V.ATC_STARTDATE, V.ATC_ENDDATE, P.PREMIUMSTARTDATE,P.PREMIUMENDDATE,P.YEARPREMIUM,P.MONTHPREMIUM,P.AMOUNT,P.EXPOSURE,P.PAYMENTTYPE, P.FK_CLIENT, C.CLIENTKEY, V.FK_CLIENTKEY FROM GV_MANUAL_PREMIUM P, GV_MANUAL_CLIENT C, GV_MANUAL_VEHICLE V WHERE P.FK_CLIENT = C.CLIENTKEY AND C.CLIENTKEY = V.FK_CLIENTKEY AND P.FK_CLIENT = 'RO14VOH*SME*SME*WARREN FINANCIAL SOLUTIONS LIMITED' AND P.YEARPREMIUM IN (2014) ORDER BY P.YEARPREMIUM, P.MONTHPREMIUM ) LOOP DBMS_OUTPUT.PUT_LINE(REG.ATC_STARTDATE ||' '|| REG.ATC_ENDDATE ||' '|| REG.PREMIUMSTARTDATE ||' '|| REG.PREMIUMENDDATE ||' '|| REG.YEARPREMIUM ||' '|| REG.MONTHPREMIUM ||' '|| REG.AMOUNT ||' '|| REG.EXPOSURE ||' '|| REG.PAYMENTTYPE ||' '|| REG.FK_CLIENT); DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------'); DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------'); IF REG.ATC_STARTDATE > REG.PREMIUMSTARTDATE AND to_char(REG.ATC_STARTDATE, 'MM') = REG.MONTHPREMIUM AND to_char(REG.ATC_STARTDATE , 'YY') = REG.YEARPREMIUM THEN DBMS_OUTPUT.PUT_LINE('ENTER'); else DBMS_OUTPUT.PUT_LINE('not enter'); END IF; END LOOP; END; Eu tenho dois campos uma deles o ATC_STARTDATE seria um campo data = 09-05-2015 e o campo PREMIUMMONTH e um campo varchar2 de 5 eu preciso fazer eles serem do mesmo tipo para comparalos no caso vou comparer o mesmo do campo ATC_STARTDATE usando somente o mes para saber se e igual o mes do campo PREMIUMMONTH DESDE JA AGRADECO QUALQUER AJUDA.
  5. RAFAEL C D EMELO

    [Resolvido] Cálculo de datas

    Mota muito obrigado eu resolve era um erro de negocio n de programacao.
  6. RAFAEL C D EMELO

    [Resolvido] Cálculo de datas

    Bom dia pessoal ainda estou com algumas duvidas sobre o procedimento que estou razendo no caso estou fazendo alguns checks em uma tablea antes de inserir alguns dados, ums dos checks que preciso fazer e checar se o catrato esta ativo do veiculo ou n no mesmo de janeiro se ele inicia antes do dia primeiro e acaba apos o dia 31 de janeiro ok somente calculo a quantidade de dias esse check esta ok , porme eu tenho que fazer outro que se o contrato por exemplo inicia no dia 10 de Janeiro e acaba apos o dia 31 eu vou calcular somente esses dias de diferenca que seriam 21 dias/365 porme estou com um erro que n acho o motivo vou anexar minha querey alguem com conhecimentos em trabalhar com essas datas pode me ajudar desde ja eu agradeco declare V_RESULT_2 NUMBER(8,4); V_RESULT_1 NUMBER(8,4) ; -- recebe o resultado do calculo V_MONTH DATE ; -- parametro do mes analisado V_DATA_START DATE; -- recebe pelo cursor a data atc_startdate V_DATE_END DATE; --recebe pelo cursor a realenddate V_END_MONTH DATE; --recebe a quantidade de dias dentro do mes begin V_MONTH := '01/01/2019'; SELECT LAST_DAY('01/01/2019')INTO V_END_MONTH FROM DUAL; for reg in (select * from TEMP_MASTER_MONTHLY) loop V_DATA_START:= REG.atc_startdate; V_DATE_END := REG.REALENDDATE; IF V_DATA_START <= V_MONTH AND V_DATE_END >= V_END_MONTH THEN V_RESULT_1 := TO_NUMBER ((V_END_MONTH - V_MONTH)+1)/365; DBMS_OUTPUT.PUT_LINE('-----------'); DBMS_OUTPUT.PUT_LINE(V_DATA_START); DBMS_OUTPUT.PUT_LINE(V_DATE_END); DBMS_OUTPUT.PUT_LINE('EXPOSURE VALUE' ||' '|| V_RESULT_1); DBMS_OUTPUT.PUT_LINE('-----------'); ELSIF V_DATA_START > V_MONTH AND to_date (V_DATA_START = 'JAN/2019')) AND V_DATE_END > V_MONTH then V_RESULT_2 := TO_NUMBER ((V_DATA_START + V_END_MONTH)+1)/365; --V_RESULT_1 := TO_NUMBER ((V_END_MONTH - V_MONTH)+1)/365; DBMS_OUTPUT.PUT_LINE(V_DATA_START); DBMS_OUTPUT.PUT_LINE(V_DATE_END); DBMS_OUTPUT.PUT_LINE(V_RESULT_2); DBMS_OUTPUT.PUT_LINE('W'); ELSE DBMS_OUTPUT.PUT_LINE('N'); DBMS_OUTPUT.PUT_LINE(V_DATA_START); DBMS_OUTPUT.PUT_LINE(V_DATE_END ||' ESTOU AQUI' ); END IF; end loop; end;
  7. RAFAEL C D EMELO

    [Resolvido] Cálculo de datas

    OK MUITO OBRIGADO MOTA VOU TENTAR AQUI RETORNO SE DER CERTO
  8. RAFAEL C D EMELO

    [Resolvido] Cálculo de datas

    Opa tudo bem mota seria em dias mas no caso eu precisaria fazer a conta do mesmo mas minhas datas sao as datas do inicio das contratos e as datas do mes corrente entende nesse caso o resultado n seria somente dos dias do mes que e o que eu preciso por exemplo o contrato comecou no dia 14/03/2015 e vai ate o dia 29/08/2020 porem eu recebo o file desse mes e preciso calcular quanto ele tem q pagar pelo seguro eu posso fazer um calculo do inicio do mes ate o fim do mes mesmo com anos diferentes ?
  9. RAFAEL C D EMELO

    [Resolvido] Cálculo de datas

    Ola galera estou com uma duvida sou novo trabalhando com Oracle e preciso calcular A diferenca entre datas no caso seria Ver as datas de um contrato e primeiramente calcular se ele esta ativo no mes nesse se sim ele precisaria calcular quantos dias ele esta ativo NO mesmo por exemplo ele pode ter iniciado o contraro no dia 1 ou no dia 16 ai calcularia os dias que ele precisa me pagar pelo seguro mas estou com duvidas de como posso calcular A quantidades de dias nesse caso se alguém puder ajudar fico muito agradecido.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.