Jump to content

Search the Community

Showing results for tags 'ORACLE'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 185 results

  1. Maccio

    Funcionários Férias

    Estou tentando criar um relatório com total de horas trabalhadas do funcionários por dia, tenho uma tabela FRQ_digitacao onde eu tenho os dados para calcular o total de horas e se tiver com zero horas eu digo a ocorrência do mesmo, ex: falta, Folga, etc. Quero também colocar a informação de férias quando o mesmo estiver de férias, porém quando ele está de férias a tabela FRQ_digitacao fica sem registros nos dias de Férias, assim tenho que buscar a informação na tabela FLP_Ferias onde é lá que diz o gozoinicial e gozofinal, porém não estou conseguindo fazer essa comparação já que na tabela FRQ_digitacao nesses dias de ferias o funcionário fica sem registro. select T.CODINTFUNC, f.CHAPAFUNC, LISTAGG( CASE WHEN T.NORMALDIGIT=0 THEN OC.DESCMAPAOCORR WHEN t.DTDIGIT IS NULL THEN 'dt.dtdigit' --when dt.dtdigit between fe.inicio and fe.fim --then 'FER' ELSE to_char((TRUNC(T.NORMALDIGIT)+TRUNC(t.extradigit)+TRUNC(t.extranotdigit))+ ((trunc(((T.NORMALDIGIT-trunc(T.NORMALDIGIT))+(t.extradigit-trunc(t.extradigit))+(t.extranotdigit-trunc(t.extranotdigit)))/0.60))+ mod(((T.NORMALDIGIT - trunc(T.NORMALDIGIT))+(t.extradigit - trunc(t.extradigit))+(t.extranotdigit - trunc(t.extranotdigit))),0.60)),'FM99999D90', 'nls_numeric_characters=''.,''' ) END, ' ') within group (order by t.dtdigit) horas, MAX(FE.INICIO), MAX(FE.FIM ) from vw_funcionarios f, FRQ_DIGITACAOMOVIMENTO O, FRQ_OCORRENCIA OC, frq_digitacao t, (select f.codintfunc INT, f.chapafunc, max(fe.dtcompetfer)COMPET, MAX(fe.gozoinifer) INICIO, MAX(fe.Gozofinfer) FIM from flp_ferias fe, flp_funcionarios f where f.codintfunc=fe.codintfunc AND F.SITUACAOFUNC='A' and f.codigoempresa=1 AND FE.STATUSFERIAS='N' group by f.chapafunc, f.codintfunc) FE, (select t.DTDIGIT from frq_digitacao t WHERE t.dtdigit between '01-NOV-2019' AND '20-NOV-2019' group by t.dtdigit) DT where DT.DTDIGIT(+)=T.dtdigit and fe.INT=t.codintfunc and f.codintfunc=t.codintfunc AND F.CODIGOEMPRESA=1 and O.CODINTFUNC=T.CODINTFUNC AND T.DTDIGIT=O.DTDIGIT AND O.CODOCORR=OC.CODOCORR AND dt.dtdigit BETWEEN '01-NOV-2019' AND '20-NOV-2019' -- AND F.CODDEPTO BETWEEN 15 AND 15 AND O.STATUSDIGIT='N' and o.iddigit = (select max(p.iddigit) from frq_digitacaomovimento p where o.codintfunc=p.codintfunc and o.dtdigit=p.dtdigit AND P.STATUSDIGIT='N' and p.dtdigit between '01-NOV-2019' AND '20-NOV-2019') group by f.CHAPAFUNC, T.CODINTFUNC
  2. 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.
  3. Bom dia galera, É o seguinte, possuo um banco de dados Oracle 10g instalado em um Oracle Linux. Hoje em dia faço backup apenas com Expdp, nunca usei Rman por falta de experiência e porque quando entrei a rotina de backup já existia. Sou leigo em questão Rman, pesquisei um pouco ultimamente e vi que o banco precisa estar em modo archivelog, coisa que meu banco não está, o tamanho total dos meus dbf gira em torno de 80gb. Estou com um pouco de receio de alterar para modo archivelog, pode dar algum problema? No modo archivelog há algum problema em casos de desligamento inesperados, é necessário algum comando quando o servidor ligar? O que realmente preciso verficar para ativar o archivelog? Pretendo efetuar essa mudança para trocar de hardware, já possuo um outro servidor de testes onde regularmente importo o arquivo de backup para testes, a ideia era colocar esse servidor de testes como servidor de produção.
  4. pablwo

    Erro ao Criar Trigger

    CREATE TABLE FUNCIONARIO( MATRICULA NUMBER PRIMARY KEY, NOME VARCHAR2(100) ); CREATE TABLE DEPENDENTE( CPF VARCHAR2(14) PRIMARY KEY, NOME VARCHAR2(100), MATRICULA_FUNCIONARIO NUMBER, CONSTRAINT fk_dependente_matricula FOREIGN KEY (matricula_funcionario) REFERENCES FUNCIONARIO(matricula) ); CREATE OR REPLACE TRIGGER QUANTIDADE_DE_DEPENDENTE BEFORE INSERT OR UPDATE ON DEPENDENTE FOR EACH ROW BEGIN IF:NEW.MATRICULA_FUNCIONARIO IN (SELECT MATRICULA_FUNCIONARIO FROM DEPENDENTE HAVING COUNT(MATRICULA_FUNCIONARIO) >= 3 GROUP BY MATRICULA_FUNCIONARIO) THEN RAISE_APPLICATION_ERROR(-20000, 'Funcionario Excedeu a Quantidade de Dependentes'); END IF; END; Boa noite, estou com dificuldades em criar triggers no sql oracle. Minha dificuldade é criar um trigger que so permita que um funcionario tenha no maximo 3 dependetes, acredito que o erro seja no select dentro do if, quando eu troco por valores como (1,2,3) esses valores servem como matriculas de funcionários que não é mais permitido adicionar dependentes.
  5. Boa tarde, No banco de dados tenho as informações a seguir, em diferentes tabelas: Acesso, Dose prescrita, tempo e volume. Preciso, de acordo com essas informações, calcular dois valores chamados bolus e rate seguindo uma condicional. O problema é como vou retornar estes dois valores, se não tem atributo onde eu possa inseri-los? Eu deveria criar uma nova tabela pra eles? Existe como retornar estes atributos sem ter de mexer em nenhuma tabela? O código atual que tenho, é: select a.nr_atendimento ATENDIMENTO, obter_nome_pf_atend(a.nr_atendimento) NOME, obter_data_nascto_pac_atend(a.nr_atendimento) NASCIMENTO, 'DOSE: ' || decode(a.qt_dose,',5','2.500 UI','1','5.000 UI','1,5','7.500 UI','2','10.000 UI','2,5','12.500 UI','3','15.000 UI','3,5','17.500 UI', '4','20.000 UI','4,5','22.500 UI','5','25.000 UI','5,5','27.500 UI','6','30.000 UI') DOSE, 'VOLUME: ' || a.qt_volume || ' ml' VOLUME, obter_desc_material(a.cd_material) MEDICAMENTO, d.qt_hora_min_sessao TEMPO, e.nr_seq_tecnica ACESSO -- Inserir aqui condicionais para cálculo de BOLUS e RATE from CPOE_material a, atend_paciente_unidade b, hd_escala_dialise c, cpoe_dialise d, hd_acesso e where a.cd_material = 49749 and a.nr_atendimento = b.nr_atendimento and d.nr_atendimento = b.nr_atendimento and obter_cd_pes_fis_atend(b.nr_atendimento) = c.cd_pessoa_fisica and b.dt_saida_unidade is null and a.dt_liberacao is not null and a.dt_suspensao is null and d.dt_liberacao is not null and d.dt_suspensao is null and c.dt_fim is null and e.cd_pessoa_fisica = obter_pessoa_atendimento(b.nr_atendimento,'C') and e.ie_adequado = 'S' and e.dt_perda_retirada is null and c.nr_seq_turno = :turno and c.nr_seq_escala = :escala E as condicionais que quero inserir é mais ou menos assim: SE acesso arteriovenoso então: se dose_prescrita = 2500 então bolus = volume e rate = '-' se dose_prescrita = 5000 então: se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 6,0 e rate = 1,6 se tempo = 3:30h ou 3:35 então Bolus = 6,0 e rate = 1,3 se tempo = 4:00 ou 4:05h então bolus = 6,0 e rate = 1,1 se dose_prescrita = 7500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 8,0 e rate = 2,8 se tempo = 3:30h ou 3:35 então Bolus = 8,0 e rate = 2,3 se tempo = 4:00 ou 4:05h então bolus = 8,0 e rate = 2,0 se dose_prescrita = 10000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 10,0 e rate = 4,0 se tempo = 3:30h ou 3:35 então Bolus = 10,0 e rate = 3,3 se tempo = 4:00 ou 4:05h então bolus = 10,0 e rate = 2,9 se dose_prescrita = 12500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 11,0 e rate = 5,6 se tempo = 3:30h ou 3:35 então Bolus = 11,0 e rate = 4,7 se tempo = 4:00 ou 4:05h então bolus = 11,0 e rate = 4,0 se dose_prescrita = 15000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 13,0 e rate = 6,8 se tempo = 3:30h ou 3:35 então Bolus = 13,0 e rate = 5,7 se tempo = 4:00 ou 4:05h então bolus = 13,0 e rate = 4,9 se dose_prescrita = 30000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 23,0 e rate = 14,8 se tempo = 3:30h ou 3:35 então Bolus = 23,0 e rate = 12,3 se tempo = 4:00 ou 4:05h então bolus = 23,0 e rate = 10,6 se não então null SE acesso cateter então: se dose_prescrita = 2500 então bolus = volume e rate = '-' se dose_prescrita = 5000 então: se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 6,0 e rate = 1,3 se tempo = 3:30h ou 3:35 então Bolus = 6,0 e rate = 1,1 se tempo = 4:00 ou 4:05h então bolus = 6,0 e rate = 1,0 se dose_prescrita = 7500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 8,0 e rate = 2,3 se tempo = 3:30h ou 3:35 então Bolus = 8,0 e rate = 2,0 se tempo = 4:00 ou 4:05h então bolus = 8,0 e rate = 1,8 se dose_prescrita = 10000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 10,0 e rate = 3,3 se tempo = 3:30h ou 3:35 então Bolus = 10,0 e rate = 2,9 se tempo = 4:00 ou 4:05h então bolus = 10,0 e rate = 2,5 se dose_prescrita = 12500 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 11,0 e rate = 4,7 se tempo = 3:30h ou 3:35 então Bolus = 11,0 e rate = 4,0 se tempo = 4:00 ou 4:05h então bolus = 11,0 e rate = 3,5 se dose_prescrita = 15000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 13,0 e rate = 5,7 se tempo = 3:30h ou 3:35 então Bolus = 13,0 e rate = 4,9 se tempo = 4:00 ou 4:05h então bolus = 13,0 e rate = 4,3 se dose_prescrita = 30000 então se tempo = 2:00h, 2:05h, 2:30h ou 2:35h então Bolus = volume e rate = '-' se tempo = 3:00h ou 3:05 então Bolus = 23,0 e rate = 12,3 se tempo = 3:30h ou 3:35 então Bolus = 23,0 e rate = 10,6 se tempo = 4:00 ou 4:05h então bolus = 23,0 e rate = 9,3 Atenciosamente, Igor
  6. Estou com dificuldade na criação de uma procedure que receba três valores numéricos e insira um registro na tabela abaixo: TB_MAIORES NUMERO1 Primeiro valor NUMERO2 Segundo valor NUMERO3 Terceiro valor MAIOR Maior valor entre (NUMERO1, NUMERO2 e NUMERO3)
  7. Olá pessoal, estou aprendendo agora relacionamentos de tabelas porém tô muito em dúvida, tenho uma pergunta: 2)Contar quantos alunos existem em cada curso, mostrando o nome do curso e o total de alunos. Estou usando sqldeveloper da oracle! Como eu faço isso? Vou precisar alguma subquery que faça a contagem antes? Pq eu tentei de várias formas usando JOIN, USING mas acho que estou fazendo algo errado, helllpppp! ####################### Aqui tem a estrutura da tabela pronta caso ajude. ####################### Curso Id_Curso – Numérico(6) – Campo Chave Nm_Curso - Varchar2(50) – Obrigatório Ds_Departamento–Varchar2(50) – Obrigatório Aluno Id_RGM – Numérico(6) – Campo Chave Nm_Aluno – Varchar2(50) – Obrigatório Ds_Endereco – Varchar2(50) – Obrigatório Ds_Bairro – Varchar2(50) – Obrigatório Ds_Cidade – Varchar2(50) – Obrigatório ID_CEP – Varchar2(8) – Obrigatório DS_Senha – Varchar2(15) – Obrigatório Id_Curso – Numérico(6) – Obrigatório Empréstimo Id_Emprestimo – Numérico(6) – Campo Chave Nm_Bibliotecario – Varchar2(50) – Obrigatório Dt_Emprestimo – Data – Obrigatório Dt_Devolucao – Data – Obrigatório Dt_Previsao – Data – Obrigatório Id_RGM – Numérico(6) – Obrigatório Itens de Empréstimo Id_Emprestimo – Numérico(6) – Campo Chave Id_Exemplar – Numérico(6) – Campo Chave Id_Livro – Numérico(6) – Campo Chave Ds_observacao – Varchar2(50) Exemplar Id_Exemplar – Numérico(6) – Campo Chave Id_Livro – Numérico(6) – Campo Chave Fl_Situacao – Varchar2(1) Aceitando somente S ou N Livro Id_livro – Numérico(6) – Campo Chave Nm_Livro – Varchar2(50) – Obrigatório Nm_Editora – Varchar2(50) – Obrigatório Nm_Autor – Varchar2(50) – Obrigatório Ds_Volume – Varchar2(50) – Obrigatório Vl_Valor – Numérico(12,2) – Obrigatório OBS.: Elaborar os relacionamentos e regras de constraint.
  8. Matheus_Moura

    Conexão banco de dados com PHP e ORACLE

    Boa tarde. Estou fazendo uma aplicação PHP em um PC Linux com Lubuntu como SO, para conexão com um banco de dados ORACLE 11g. Porém quando utilizo a função oci_connect ou qualquer outra função para oracle é retornado uma mensagem informando que estão indefenidas. Estou utilizando o XAMPP como servidor e fiz a configuração no caminho opt/lampp/etc/php.ini retirando o ; tanto no php_oci8.dll como também na php_oracle.dll, porém não obtive sucesso. Coloquei dentro da pasta opt também o instantclient já descompactado e utilizei o PECL para tentar ativar as OCI, porém mesmo assim ainda não consegui sucesso. Alguém teria alguma outra sugestão ? Att, Matheus Moura
  9. Ao acessar o meu aplicativo recebo a seguinte mensagem: 'the dbname and launch parameters must be specified on first run' como resolver? Ao acessar o meu aplicativo recebo a seguinte mensagem: 'the dbname and launch parameters must be specified on first run' como resolver? Existe algo que possa ser feito?
  10. RafaGomes

    [Resolvido] Select Case condicional

    Boa tarde, seria possível realizar uma consulta da seguinte forma: SELECT * FROM CARGA WHERE (CASE WHEN :VARIAVEL = 2 THEN ('2', '7') WHEN :VARIAVEL = 3 THEN ('3', '9', '10') WHEN :VARIAVEL = 4 THEN '4' WHEN :VARIAVEL = 5 THEN '5' WHEN :VARIAVEL = 6 THEN '6' END) IN AD_DIAENTREGA;
  11. asacap1000

    Página que recebe o curl/POST

    Galera estou com uma dúvida, tenho a parte de envio de dados para em Post, com encode json e curl. Já pesquisei em todos os lugares e não encontrei nada pra clarear as idéias. a parte final é essa do envio (cliente) header("Content-Type: ".$mediaType); $headers = array(); $headers[] = "Accept: ".$mediaType; $headers[] = "Accept-Charset: ".$charSet; $headers[] = "Accept-Encoding: ".$mediaType; $headers[] = "Content-Type: ".$mediaType.";charset=".$charSet; $headers[] = "Authorization: Basic ".$AuthorizationHeaderBase64; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"contatos=$contatos"); #campos que serão enviados curl_setopt($ch, CURLOPT_USERPWD, $AuthorizationHeaderBase64); curl_setopt($ch, CURLOPT_HEADER, $headers); curl_setopt($ch, CURLINFO_HTTP_CODE, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);#ativa se for ter retorno do chamada $result = curl_exec($ch); $result2 = json_decode($result,true); curl_close($ch); if($result2 === false) { $err = 'Curl error: ' . curl_error($ch); $result2 = $err; echo "This is text".$err; } var_dump ($result2); Preciso de ajuda para entender como deve ser feito a página que será chamada, no caso lado servidor. Como pode ver tenho um header configurado e será enviado com chave de autorização agora como isso é feito do lado servidor?? Se alguém puder me ajudar, preciso entregar este webservice sexta feira 18/10. Todos os dados recebidos serão salvos no BD Oracle.
  12. Erika Fragoso

    Conexão não encerra com UTL_SMTP.QUIT

    Boa tarde Estou com problema para fechar a a conexão do UTL_SMTP. Quando executo a procedure mais de uma vez, apresenta erro: "too many open connections". Exemplo: Se executo esse bloco inteiro ele apresenta o erro a seguir: EXEC ATUALIZACAO(382002, 73, 356.000, 371.900); EXEC ATUALIZACAO(382003, 73, 373.600, 386.900); EXEC ATUALIZACAO(382004, 73, 389.600, 399.400); EXEC ATUALIZACAO(382005, 73, 117.500, 128.200); EXEC ATUALIZACAO(382006, 73, 130.900, 138.800); EXEC ATUALIZACAO(382007, 73, 146.600, 157.000); ------------ERRO--------------- 0678. 00000 - "too many open connections" *Cause: An attempt to open a connection failed because too many are already open by this session. The number of allowed connections varies as some may be in use through other components which share the same pool of allowed connections. *Action: Retry after closing some other connection. The number of connections supported is currently not adjustable. Agora se executo um por um não da erro. A impressão que tenho é que não esta fechando a conexão do UTL_SMTP. Ja tentei utilizar o UTL_SMTP.QUIT e o UTL_SMTP.CLOSE_CONNECTION dentro e fora do loop , mas não funcionou. Alguém tem alguma dica do que pode ser feito ? Segue a procedure : --Enviar o E-Mail IF bEnviaMail then --(StrDscMsg is not NULL) THEN StrCabMail := 'VERSAO : '||p_Versao ||' DIV: '||p_Division ||crlf||crlf|| 'ID Anti Novo ID KM Ini KM Fim Lin Vel Tipo H_Ini H_Fim Motivo '; StrDscMsg := StrCabMail ||crlf|| StrDscMsg; connmail := UTL_SMTP.OPEN_CONNECTION('smtp',25); FOR RegEmail IN( SELECT MR_MAIL FROM MAIL_REFRESH WHERE MR_GRUPO = 1 ) LOOP BEGIN ----connmail := UTL_SMTP.OPEN_CONNECTION('smtp',25); StrMailMsg := 'Date: ' ||TO_CHAR( SYSDATE,'dd Mon yyyy hh24:mi:ss') ||crlf|| 'From: <' ||'restricao@gmail.com'||'>' ||crlf|| 'Subject: '||'REFRESH VERSAO ' || p_Versao || TO_CHAR( SYSDATE,' dd/mm/yyyy hh24:mi:ss') ||crlf|| 'To: ' || ToEmail ||crlf|| ' Atualizações que foram retiradas e recolocadas na base ' ||crlf|| '' ||crlf|| 'Banco: ' || db_name || ' - ' || schema_name ||crlf|| '' ||crlf|| StrDscMsg ||crlf|| '' ||crlf|| '' ||crlf|| '[ATUALIZACAO]'; UTL_SMTP.HELO(connmail,'smtp'); UTL_SMTP.MAIL(connmail,'restricao@gmail.com'); UTL_SMTP.RCPT(connmail, RegEmail.MR_MAIL); UTL_SMTP.DATA(connmail,StrMailMsg); -- UTL_SMTP.QUIT(connmail); END; End Loop; UTL_SMTP.QUIT(connmail); End If; COMMIT; END;
  13. Galera salve a todos. Gostaria de saber se é possivel e se for como fazer. Tenho um select de faturamento, e nesta consulta ele me traz o numero da NF, ele me traz os ítens faturados. Gostaria de saber se´no próprio select é possível trazer o numero da NF apenas uma vez, e nas outras linhas que estarão vindo os ítens cobrados estes campos ficarem vazios. Segue exemplo hoje como está e como eu preciso. Como eu preciso: Abaixo o select SELECT A.ID_KLIENT COD, K.NAME NOME, A.BILLITE ITEM, I.DESCRIPTION DESC_ITEM, SUM(A.MNG) QUANT, SUM(ROUND(A.PREIS, 3)) VALOR, BO.NR_NF NF FROM BILL_OS_ITEM A, BILL_ITEM I, KLIENTEN K, BILL_OS BO, (SELECT T.DOCSVE_REF, D.DOCHD_DOC_ID FROM FISCAL.DOCSVE T, FISCAL.DOCHD D WHERE T.DOCSVE_DOC_PRC_ID = D.DOCHD_DOC_PRC_ID) REFE WHERE I.BILLITE = A.BILLITE AND A.ID_KLIENT = K.ID_KLIENT AND BO.NR_NF = REFE.DOCHD_DOC_ID(+) AND BO.ID_KLIENT = K.ID_KLIENT AND BO.STATUS <> '80' AND BO.ID_OS = A.ID_OS AND TRUNC(BO.DATE_EMISS) >= TO_DATE('01/09/2019', 'DD/MM/YYYY') AND TRUNC(BO.DATE_EMISS) <= TO_DATE('30/09/2019', 'DD/MM/YYYY') GROUP BY A.ID_KLIENT, K.NAME, A.BILLITE, I.DESCRIPTION, BO.NR_NF, BO.LOTE, REFE.DOCSVE_REF ORDER BY K.NAME, A.ID_KLIENT, A.BILLITE
  14. Boa tarde, Estou enfrentando um problema recorrente nas minhas queries, já tentei algumas alternativas encontradas aqui, sem sucesso. Tenho o seguinte select: select avaliacao.dt_liberacao, avaliacao.cd_pessoa_fisica, nome.nm_pessoa_fisica NOME_PCT, decode(diag.qt_resultado,871,'Desnutrição grave',872,'Desnutrição moderada',873,'Desnutrição leve', 874,'Eutrofia',875,'Sobrepeso',876,'Obesidade') from med_avaliacao_paciente avaliacao, pessoa_fisica nome, med_avaliacao_result diag where diag.nr_seq_item = 1266 and diag.nr_seq_avaliacao = avaliacao.nr_sequencia and avaliacao.cd_pessoa_fisica = nome.cd_pessoa_fisica and avaliacao.dt_liberacao is not null and ie_situacao = 'A' O que quero é trazer apenas o último registro por pessoa, um das alternativas que tentei foi dada em outro tópico pelo moderador Motta, incluindo no where o código: and avaliacao.dt_liberacao = (select max(avaliacao2.dt_liberacao) from med_avaliacao_paciente avaliacao2 where avaliacao.cd_pessoa_fisica = avaliacao2.cd_pessoa_fisica) Porém esse select só retorna um resultado... Realmente preciso entender como funciona essa lógico, porque tenho vários selects semelhantes que preciso retirar os resultados "repetidos"
  15. Estou com o seguinte problema fiz alguns cursores para exportar algumas informações para texto, porém está demorando mais de 2 horas para exportar 4 mil linhas, o problema aconteceu depois de ter incluído os registros de nível 3 e 4 algumas dessas tabelas estão sem informação não sei se seria esse o problema, todas as minhas tabelas estão indexadas. Gostaria de saber se alguém pode me ajudar a otimizar esse tempo ou me informar qual seria a melhor maneira de fazer isso, sem o nível 3 e 4 levava 5 min para gerar o mesmo resultado, agora leva mais de 2hs. Abaixo Segue o Cursor. Obrigado! --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SET SERVEROUTPUT ON; DECLARE MEU_ARQUIVO UTL_FILE.FILE_TYPE; CURSOR CR_0000 IS SELECT * FROM TBL_EFD_ICMS_0000; CURSOR CR_C100 IS SELECT * FROM TBL_EFD_ICMS_C100; CURSOR CR_C110 IS SELECT * FROM TBL_EFD_ICMS_C110; CURSOR CR_C111 IS SELECT * FROM TBL_EFD_ICMS_C111; REG_0000 CR_0000%ROWTYPE; REG_C100 CR_C100%ROWTYPE; REG_C110 CR_C110%ROWTYPE; REG_C111 CR_C111%ROWTYPE; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- BEGIN MEU_ARQUIVO := UTL_FILE.FOPEN('DIRETORIO', 'SAIDAS_NEW.txt', 'w'); OPEN CR_0000; -- nivel 1 LOOP FETCH CR_0000 INTO REG_0000; EXIT WHEN CR_0000%NOTFOUND; UTL_FILE.PUT_LINE(MEU_ARQUIVO,'|'||REG_0000.REG ||'|'||REG_0000.COD_VER ||'|'||REG_0000.DT_INI ||'|'||REG_0000.DT_FIN ||'|'||REG_0000.CNPJ ||'|'||REG_0000.IND_ATIV ||'|'); OPEN CR_C100; -- nivel 2 LOOP FETCH CR_C100 INTO REG_C100; EXIT WHEN CR_C100%NOTFOUND; IF REG_C100.ID_0000 = REG_0000.ID_0000 THEN UTL_FILE.PUT_LINE(MEU_ARQUIVO,'|'||REG_C100.REG ||'|'||REG_C100.SER ||'|'||REG_C100.NUM_DOC ||'|'||REG_C100.CHV_NFE ||'|'||REG_C100.DT_DOC ||'|'||REG_C100.DT_E_S ||'|'||REG_C100.VL_DOC ||'|'||REG_C100.VL_COFINS_ST ||'|'); END IF; OPEN CR_C110; -- nivel 3 LOOP FETCH CR_C110 INTO REG_C110; EXIT WHEN CR_C110%NOTFOUND; IF REG_C110.ID_0000 = REG_0000.ID_0000 AND REG_C110.ID_C100 = REG_C100.ID_C100 THEN UTL_FILE.PUT_LINE(MEU_ARQUIVO,'|'||REG_C110.REG ||'|'||REG_C110.COD_INF ||'|'||REG_C110.TXT_COMPL ||'|'); END IF; OPEN CR_C111; -- nivel 4 LOOP FETCH CR_C111 INTO REG_C111; EXIT WHEN CR_C111%NOTFOUND; IF REG_C111.ID_0000 = REG_0000.ID_0000 AND REG_C111.ID_C100 = REG_C100.ID_C100 AND REG_C111.ID_C110 = REG_C110.ID_C110 THEN UTL_FILE.PUT_LINE(MEU_ARQUIVO,'|'||REG_C111.REG ||'|'||REG_C111.COD_INF ||'|'||REG_C111.TXT_COMPL ||'|'); END IF; END LOOP; CLOSE CR_C111; END LOOP; CLOSE CR_C110; END LOOP; CLOSE CR_C100; END LOOP; CLOSE CR_0000; DBMS_OUTPUT.PUT_LINE('Arquivo gerado com sucesso.'); --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Exception WHEN UTL_FILE.INVALID_OPERATION THEN Dbms_Output.Put_Line('Operação inválida no arquivo.'); UTL_FILE.FCLOSE(MEU_ARQUIVO); WHEN UTL_FILE.WRITE_ERROR THEN Dbms_Output.Put_Line('Erro de gravação no arquivo.'); UTL_FILE.FCLOSE(MEU_ARQUIVO); WHEN UTL_FILE.INVALID_PATH THEN Dbms_Output.Put_Line('Diretório inválido.'); UTL_FILE.FCLOSE(MEU_ARQUIVO); WHEN Others THEN Dbms_Output.Put_Line('Problemas na gravação do arquivo.'); UTL_FILE.FCLOSE(MEU_ARQUIVO); END; /
  16. Boa tarde, Estou enfrentando um problema recorrente nas minhas queries, já tentei algumas alternativas encontradas aqui, sem sucesso. Tenho o seguinte select: select avaliacao.dt_liberacao, avaliacao.cd_pessoa_fisica, nome.nm_pessoa_fisica NOME_PCT, decode(diag.qt_resultado,871,'Desnutrição grave',872,'Desnutrição moderada',873,'Desnutrição leve', 874,'Eutrofia',875,'Sobrepeso',876,'Obesidade') from med_avaliacao_paciente avaliacao, pessoa_fisica nome, med_avaliacao_result diag where diag.nr_seq_item = 1266 and diag.nr_seq_avaliacao = avaliacao.nr_sequencia and avaliacao.cd_pessoa_fisica = nome.cd_pessoa_fisica and avaliacao.dt_liberacao is not null and ie_situacao = 'A' O que quero é trazer apenas o último registro por pessoa, um das alternativas que tentei foi dada em outro tópico pelo moderador Motta, incluindo no where o código: and avaliacao.dt_liberacao = (select max(avaliacao2.dt_liberacao) from med_avaliacao_paciente avaliacao2 where avaliacao.cd_pessoa_fisica = avaliacao2.cd_pessoa_fisica) Porém esse select só retorna um resultado... Realmente preciso entender como funciona essa lógico, porque tenho vários selects semelhantes que preciso retirar os resultados "repetidos"
  17. EREGON

    Problemas com Merge em Oracle

    Olá, estou a ter problemas com o seguinte código, dando o erro: "ORA-01861: o literal não corresponde à cadeia de caracteres do formato" MERGE INTO B491_MAIN main USING( SELECT ACESS_ID, CASE WHEN (ACESS_ID IN (SELECT ACESS_ID FROM ( SELECT ACESS_ID, END_DATE_CP, SUBSTR(TO_CHAR(SYSDATE, 'YYYYMMDD'), 1, 6) || BILL_CYCLE_CODE AS REF_DATE, BILL_CYCLE_CODE, TO_CHAR(SYSDATE, 'YYYYMMDD') AS PREBILL FROM B491_MAIN WHERE EXCLUSAO = 'OK' )t WHERE TO_DATE(END_DATE_CP) < TO_DATE(REF_DATE) AND TO_DATE(END_DATE_CP) < TO_DATE(PREBILL) - 15 AND TO_DATE(REF_DATE) < TO_DATE(PREBILL) - 8 ) ) THEN 'POST_BILL' ELSE 'PRE_BILL' END AS DECISION FROM B491_MAIN WHERE EXCLUSAO = 'OK' )tabela ON(tabela.ACESS_ID = main.ACESS_ID) WHEN MATCHED THEN UPDATE SET LIST_ID = tabela.DECISION WHEN NOT MATCHED THEN INSERT (LIST_ID) VALUES('POST_BILL') ; O código dentro do "USING" corre bem. Alguma ajuda? Obrigado.
  18. asacap1000

    resultado em cada linha

    Galera estou com uma consulta que ainda não consegui entender o porque. gostaria que ela trouxesse em apenas uma linha mas não vem de forma alguma. SELECT BO.LAGER, BO.ID_OS, K.ID_KLIENT, K.SUCHBEGRIFF CNPJ_CPF, K.NAME, BI.DIV_1 LOTE, BI.DIV_10 DI_DDE, (SELECT DISTINCT DIS.ID_DISPATCHER FROM FISCAL.DOCHD DC, WMS_EADI.DISPATCHER DIS WHERE DC.DOCHD_DOC_ID = BO.NR_NF AND DC.DOCHD_RPS_DESP = DIS.SUCHBEGRIFF) COD_COMISSARIA, (SELECT DISTINCT DIS.BEZ FROM FISCAL.DOCHD DC, WMS_EADI.DISPATCHER DIS WHERE DC.DOCHD_DOC_ID = BO.NR_NF AND DC.DOCHD_RPS_DESP = DIS.SUCHBEGRIFF) COMISSARIA, BO.NR_NF, BO.DATE_BILL, BO.DATE_EMISS, --------ABAIXO OS TIPOS DE SERVIÇOS ONDE ESTÃO OCORRENDO CADA RESULTADO ELE CRIA UMA LINHA---------------- (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'ARMAZ')) VLR_ARMAZ, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'GER.RISCO')) VLR_GER_RISCO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'MOVIMENT')) VLR_MOVIMENTACAO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'DESUNIT')) VLR_DESUNIT, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'PESAGEM')) VLR_PESAGEM, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT LIKE 'AVERBA%')) VLR_AVERBACAO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND WER.WERT = 'FAT.MINIMO.')) VLR_FAT_MINIMO, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND BLL.BILLITE NOT IN ('21.02', '21.03') AND WER.WERT = 'OUT.SERV.')) VLR_OUTROS_SERV, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND BLL.BILLITE = '21.02' AND WER.WERT = 'OUT.SERV.')) TRANSF_IN, (SELECT SUM(ROUND(OSI.PREIS, 2)) FROM BILL_OS_ITEM OSI WHERE OSI.LAGER = BO.LAGER AND OSI.ID_KLIENT = K.ID_KLIENT AND OSI.ID_OS = BO.ID_OS AND OSI.BILLITE = BI.BILLITE AND OSI.DIV_1 = BI.DIV_1 --AND NVL(OSI.DIV_10, 'x') = NVL(BI.DIV_10, 'x') AND OSI.BILLITE IN (SELECT BLL.BILLITE FROM BILL_ITEM BLL, WERTE WER WHERE BLL.TIPO_FAT = WER.WERT AND WER.WERTE_BER = 'ITENSF' AND BLL.BILLITE = '21.03' AND WER.WERT = 'OUT.SERV.')) TRANSF_OUT FROM BILL_OS BO, BILL_OS_ITEM BI, KLIENTEN K WHERE BO.LAGER = BI.LAGER AND BO.ID_KLIENT = BI.ID_KLIENT AND BO.ID_OS = BI.ID_OS AND BO.LAGER = K.LAGER AND BO.ID_KLIENT = K.ID_KLIENT and k.id_klient = '3099' and BO.NR_NF = '121304' AND BO.STATUS = '90' AND TRUNC(BO.DATE_BILL) BETWEEN '28/08/2019' AND '28/08/2019' GROUP BY BO.LAGER, BO.ID_OS, K.ID_KLIENT, K.SUCHBEGRIFF, K.NAME, BO.DATE_EMISS, BO.NR_NF, BO.DATE_BILL, BI.BILLITE, BI.DIV_1, BI.DIV_10 Alguem consegue identificar neste select porque ele vem assim?
  19. Pessoal, instalei o oracle database XE 11g express via docker em um MacOS e até então estive utilizando normalmente, o problema é que eu acho que em um determinado tempo de uso a senha padrão do usuário SYS expira. Agora eu não consigo mais acessar, não sei como acessar o banco via terminal para alterar a senha do usuário, alguém que esteja mais acostumado consegue me dar uma ajuda?
  20. Bom dia, estou iniciando com bando de dados oracle e plsql e estou precisando de uma ajuda para criar um arquivo .bat para nossa empresa em que o usuário consiga apagar os horários do nosso banco de dados, mas não sei como fazer a procedure identificar o dado digitado na variável do .bat script do .bat @echo Off title limpeza de horarios. : inicio cls echo -------------------Informe uma data valida, apenas numeros------------------- echo . echo ------------------------------informe a data--------------------------------- set /p data = echo . echo . sqlplus usuario/senha@intancia @script.sql cls echo . : Fim echo . echo -----------------Horario apagado----------------- echo . pause O script em questão é esse, ele executa uma procedure, ela apaga os horários, o parâmetro da mesma é uma data ex: abaixo. set serveroutput on begin sp_apaga_horario('31072019'); end; / exit como eu faço para o dado salvo na variável data seja executado no parâmetro da procedure? não estou conseguindo fazer isso, estou tendo que alterar o script para data que o usuário quer apagar e somente executando o .bat digitando números aleatórios para que ele não trave, não sei como fazer para a mesma identificar esse dado estando em um script diferente. Quem souber e puder me ajudar ja agradeço desde já.
  21. asacap1000

    Ultima data independente do id

    Galera não sei o porque mas n select abaixo eu preciso mostrar o ultimo registro de uma das datas que são lançadas. SELECT IO.ID_IN_OUT TICKET, TO_CHAR(IO.TIME_ARRIVAL, 'DD/MM/YYYY HH24:MI') CHEGADA, TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI') LIBERADO, TO_CHAR(IO.TIME_IN, 'DD/MM/YYYY HH24:MI') ENTRADA, SUBSTR(SP.NAME, 0, 18) TRANSPORTADORA, SUBSTR(DR.NAME, 0, 18) MOTORISTA, VE.PLATE PLACA, (SELECT DISTINCT MAX(TOS.PLATZ) DOCA FROM PICKAUF PI, AUFTRAEGE TOS, (SELECT IO.ID_IN_OUT, MAX(IO.TIME_RELEASE_PP) TIME_RELEASE_PP, IOP.DOCUMENT, MAX(IO.TIME_OUT) TIME_OUT FROM IN_OUT IO, IN_OUT_POS IOP WHERE IO.ID_IN_OUT = IOP.ID_IN_OUT --AND IO.ART_IN_OUT IN ('CA', 'CCE', 'CC') AND IO.STAT <> '80' GROUP BY IOP.DOCUMENT, IO.ID_IN_OUT) SAD WHERE PI.CHARGE = TOS.NR_AUF AND SAD.ID_IN_OUT = IO.ID_IN_OUT AND SAD.DOCUMENT(+) = REPLACE(TRANSLATE(TOS.HINW_ZUST, '/-', ' '), ' ') GROUP BY SAD.ID_IN_OUT) DOCA FROM IN_OUT IO, SPEDITEURE SP, VEHICLE VE, TRACTOR TR, DRIVER DR WHERE IO.STAT <> '80' AND IO.TIME_ARRIVAL IS NOT NULL AND TR.ID_TRACTOR = IO.ID_TRACTOR AND DR.ID_DRIVER = IO.ID_DRIVER AND VE.ID_VEHICLE = IO.ID_VEHICLE AND IO.TIME_RELEASE_PP IS NULL AND SP.ID_SPEDITEUR = IO.ID_SPEDITEUR AND IO.ART_IN_OUT IN ('CA', 'CC', 'CCE', 'CV') and rownum = '1' ORDER BY TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI') Neste Select temos as datas de CHEGADA, LIBERADO, ENTRADA. eu preciso mostrar o ultimo registro do LIBERADO. Eu já fiz um max porém não retornou.Ela será utilizada em um telão no pátio de uma empresa. O telão será desta forma
  22. Galera preciso de ajuda, Meu campo no banco de data é data/hora, e preciso ver a hora. Quando eu faço o select me retorna apenas a data. Realizei o debug e vi que esta retornando apenas a data como varchar. Conseguem me ajudar ? Ja tentei diversas conversões de data. To char, To date , Date , Strtotime ... Nada funcionou. Uso PHP 5.6.40 e banco de dados Oracle. Minha necessidade é mostrar a data e hora do evento. Alguem conhece uma solução ? Formato no meu banco : 25.07.2019 05:33:00 Meu codigo: SELECT : $sql='SELECT tr.tm_prf_act as prf, tr.tm_cod_of, ev.ev_nom_mac , un.dt_ini_parada, un.dt_fim_parada, un.cod_motivo, un.cod_mot_despachador FROM unl_trens_parados un,trens tr, elem_via ev WHERE un.id_trem_act = tr.tm_id_trm AND un.id_sb = ev.ev_id_elm AND un.dt_ini_parada > SYSDATE -1 AND un.id_posto = 2 AND un.cod_motivo IN (20,28,26,50,15,30) AND un.dt_fim_parada IS NOT NULL ORDER BY un.dt_ini_parada desc '; Conexão : $stid=oci_parse($ora_conexao,$sql); oci_execute($stid); Chamando a data somente para testar : $teste = oci_result($stid,'DT_INI_PARADA'); --> Estou testando o campo de data echo date('d/m/Y H:m:s', strtotime($teste)); -> Chamando a data Debug ( Me retorna apenas data "25/07/2019") $var = $teste; -> Debugando var_dump($var); > Debugando die(); > Debugando
  23. Pessoal, bom dia.Preciso calcular em horas e minutos a diferença entre datas com horas e minutos.Exemplo 1:Data Inicial: 01/06/2006 10:30Data Final: 02/06/2006 11:00Preciso que o retorno seja: 23:30Exemplo 2:Data Inicial: 01/06/2006 10:30Data Final: 02/06/2006 14:00Preciso que o retorno seja: 27:30Tentei o seguinte código abaixo, porém ele dá uma diferença de 1 hora a mais. Alguém pode me ajudar? Ou me passar outra forma de fazer? Obrigada! 1 2 3 4 5 select round(((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') - to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440))/60)||':'|| round((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') - to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440) -1440) from dual
  24. Olá, preciso transformar a seguinte subquery para utilizar como uma table no join NVL((SELECT X.MPE_META FROM (SELECT MPE_IDC_ID, MPE_META FROM META_PERSONALIZADA_SLA M ORDER BY M.MPE_META DESC) X WHERE ROWNUM = 1 AND X.MPE_IDC_ID = IDC_ID AND X.MPE_META <= APR_NEGOCIACAO_SLA), IDC_META) eu utilizo esse trecho em vários lugares dentro da minha procedure, então queria utilizar como "LEFT JOIN", assim o custo seria menor da procedure caso seja possivel e alguem puder ajuda
×

Important Information

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