Ir para conteúdo

ronimarcos.silva

Members
  • Total de itens

    11
  • Registro em

  • Última visita

Tudo que ronimarcos.silva postou

  1. ronimarcos.silva

    Insert Into com Múltiplas Línhas - Oracle

    Estou com a seguinte situação: No Mysql eu consegui fazer em "insert into" de uma única vez, com vários registros, conforme abaixo: insert into prefeitos (nome, cidade_id) VALUES ('Rodrigo Neves', 2), ('Caique Rosa Baldran', 9), ('Raquel Lira', 11), ('Maísa Albuquerque Sain', 12), ('Zenaldo Coutinho', null); Porém, no Oracle 12C, usando a mesma forma que no Mysql, está dando o seguinte erro: insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '279', 'U', '5', '0', '0', '1360', '13730', '100', '31058', '100'), ('800', 'S0001', '280', 'U', '5', '0', '0', '1360', '13730', '100', '31060', '100'), ('800', 'S0001', '281', 'U', '5', '0', '0', '1360', '13730', '100', '31202', '100'), ('800', 'S0001', '282', 'U', '5', '0', '0', '1360', '13730', '100', '31203', '100'); ORA-00933: comando SQL não encerrado adequadamente Será que a sintaxe no Oracle é diferente? Eu sei que assim funciona perfeitamente: insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '279', 'U', '5', '0', '0', '1360', '13730', '100', '31058', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '280', 'U', '5', '0', '0', '1360', '13730', '100', '31060', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '281', 'U', '5', '0', '0', '1360', '13730', '100', '31202', '100'); insert into e080rat (CODEMP, CODSER, SEQRAT, TIPRSC, CRIRAT, NUMPRJ, CODFPJ, CTAFIN, CTARED, PERCTA, CODCCU, PERRAT) values ('800', 'S0001', '282', 'U', '5', '0', '0', '1360', '13730', '100', '31203', '100'); Porém, eu tenho uma tabela com quase 100.000 registros e gostaria de fazer em um único "insert". Eu uso o PL/SQLDeveloper e quando faço o "insert" da forma acima, com vários "insert into", ele abre um novo documento para cada "insert into", nisso ele trava, fica horas rodando o "insert" e não conclui se for em um único "insert" como no Mysql, creio que não pesaria tanto. Tem uma forma mais fácil de fazer o "insert into" com muitos dados envolvidos? Desde já agradeço.
  2. ronimarcos.silva

    Usar Case com IN e NOT IN no Oracle

    Como faço para usar o Case com o "In", por exemplo no caso abaixo? (case gope.cd_grp_operat when 1 then 1 when 3 then 1 when 15 then 1 when 25 then 1 when 35 then 1 when 45 then 1 when 55 then 1 else 99 end ) ib_controla_km, -- Eu posso fazer asism? (case gope.cd_grp_operat when in (1, 3, 15, 25, 35, 45, 55) else 99 end ) ib_controla_km, Ou assim, aninhando o (1, 3, 45) dentro de um "IN": (case gope.cd_grp_operat when gope.cd_grp_operat = 1 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 2 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) when 45 then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) )else 0 end)f_km_inicial,
  3. ronimarcos.silva

    Usar Case com IN e NOT IN no Oracle

    Não sei se tenho que abrir outro tópico, mas veja o que ocorre: No meu query, se coloco um campo assim ele funciona normalmente: (case when gope.cd_grp_operat in (1, 3, 45) then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) else 0 end)f_km_inicial Mas se coloco o outro campo, dá o erro: ORA-01427: a subconsulta de uma única linha retorna mais de uma linha: (case when gope.cd_grp_operat in (1, 3, 45) then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) else 0 end)f_km_inicial, --38 (case when gope.cd_grp_operat not in (1, 3, 45) then (Select Vl_hori_odom From Apabastec_De Where Apabastec_De.Id_Equipto = eq.id_equipto And Dt_Abastec = (Select Max(Dt_Abastec) From Apabastec_De Where ID_Equipto = eq.id_equipto) ) else 0 end) f_horimetro_inicial --39
  4. ronimarcos.silva

    Usar Case com IN e NOT IN no Oracle

    Obrigado Motta, tão simples e eu dificultando, Deus abençoe.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.