Jump to content

Recommended Posts

COM BASE NA TABELA HR DO ORACLE

Preciso criar uma sub-rotina (procedure) que imprima na tela o número de funcionários (employees) agrupados por departamentos (department_id). Deve-se ordenar a saída em ordem decrescente pela quantidade de departamentos. Pode-se utilizar qualquer forma de cursor para imprimir o resultado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By lucascientista
      Boa noite, galera é o seguinte eu estou montando um script que pesquisa no banco de dados e mostrar os resultados em uma página php, bem aí que está o problema eu pesquisei alguns sistemas de paginação e de pesquisa e acabei montando meu script, no meu script a pesquisa aparece na primeira página mas quando passo para a página adiante não me é mostrado resultado nenhum já verifiquei tudo e não consigo encontrar o erro, será que alguém pode me ajudar?
       
      <?php #Incluindo a conexão no banco de dados require_once '../dao/conexao/Conexao.php'; $conexao = Conexao::getInstance(); /***********************************************/ #Aqui começa a parte a paginação e pesquisa /**********************************************/ #Limitando o número máximo de resultados que serão mostrados na tela $maximo = 1; #Armazenando o valor da página atual $pagina = isset($_GET["pagina"])? ($_GET["pagina"]): '1'; #Subtraindo 1, porque os registro começam do zero como em um array $inicio = $pagina - 1; #Multiplicamos a quantidade de registros da pagina pelo valor da pagina atual $inicio = $maximo * $inicio; #Agora chega a parte em que fazemos o SELECT para contar os resultados $sql = "SELECT * FROM centroautomotivo"; $stmt = $conexao->prepare($sql); $stmt->execute(); $contagem = $stmt->fetchAll(PDO::FETCH_ASSOC); $total = 0; if(count($contagem)){ foreach ($contagem as $linhas) { #Armazenando o total de registros da tabela para fazer a paginação $total = count($contagem); } } /******************************************************************* * Aqui vai começar a parte da pesquisa, tornando o script em um só ********************************************************************/ #Recebe o termo da pesquisa se existir $termo = (isset($_GET["termo"])) ? ($_GET["termo"]) : ''; #Executa uma pesquisa com o termo pesquisado como parametro - Este SELECT irá servir também para a paginação if(empty($termo)){ //Nada aqui } else{ $sql = "SELECT * FROM centroautomotivo WHERE nomefantasia LIKE :nomefantasia or email LIKE :email ORDER BY idCentro LIMIT $inicio,$maximo"; $stm = $conexao->prepare($sql); $stm->bindValue(':nomefantasia', '%'.$termo.'%'); $stm->bindValue(':email', '%'.$termo.'%'); $stm->execute(); $autocenters = $stm->fetchAll(PDO::FETCH_ASSOC); } <?php require_once '../includes/header.php'; require_once '../controller/paginacaoPesquisaCentro.php'; ?> <div class="container mb-5"> <h1 class="text text-center">Centros Automotivos</h1> <p class="text text-center">Encontre o centro automotivo que mais se encaixa com você</p> <!--Formulário de pesquisa com paginação--> <form method="GET" action=""> <div class="d-flex flex-column bd-highlight mb-3"> <div class="p-2 bd-highlight"><img src="../img/Logotipo.png" class=" img-fluid rounded mx-auto d-block"></div> <div class="p-2 bd-highlight d-flex justify-content-center" style="margin-top: -10px;"><input type="text" name="termo" class="form-control" style=" width: 60%;" placeholder="Pesquise pelo Centro Automotivo!"/></div> <div class="p-2 bd-highlight d-flex justify-content-center"><button type="submit" class="btn btn-outline-primary"><i class="fas fa-search"></i>&nbsp;Pesquisar</button></div> </div> </form> <!--Fim do formuláio de pesquisa--> <!--Início dos resultados da pesquisa--> <?php if(!empty($autocenters)){?> <?php foreach ($autocenters as $autocenter) { ?> <center> <div class="card mb-3" style="max-width: 540px;"> <div class="row no-gutters"> <div class="col-md-4"> <img src="../controller<?php empty($autocenter["foto"])? 'images/pic.png' : $autocenter["foto"] ?>" class="card-img img-fluid" width="150px" height="150px"> </div> <div class="col-md-8"> <div class="card-body"> <p class="card-text text-justify"><?php $autocenter["nomefantasia"]?></p> <p class="card-text text-justify"><small class="text-muted"><?=$autocenter["email"]?></small></p> </div> </div> </div> </div> </center> <?php }//Fechamento do foreach?> <div id="alignpaginacao"> <?php //determina de quantos em quantos links serão adicionados e removidos $max_links = 6; //dados para os botões $previous = $pagina - 1; $next = $pagina + 1; //usa uma funcção "ceil" para arrendondar o numero pra cima, ex 1,01 será 2 $pgs = ceil($total / $maximo); //se a tabela não for vazia, adiciona os botões if($pgs > 1 ){ echo "<br/>"; //botao anterior if($previous > 0){ echo "<div id='botaoanterior'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' /></a></div>"; } else{ echo "<div id='botaoanteriorDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' disabled='disabled'/></a></div>"; } echo "<div id='numpaginacao'>"; for($i=$pagina-$max_links; $i <= $pgs-1; $i++) { if ($i <= 0){ //enquanto for negativo, não faz nada }else{ //senão adiciona os links para outra pagina if($i != $pagina){ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a> ..."; }else{ echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a>"; } } else{ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<span class='current'> ".$i."</span> ..."; }else{ echo "<span class='current'> ".$i."</span>"; } } } } echo "</div>"; //botao proximo if($next <= $pgs){ echo " <div id='botaoprox'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button'/></a></div>"; }else{ echo " <div id='botaoproxDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button' disabled='disabled'/></a></div>"; } } ?> </div> <?php }//Fechamento do if?> <!--Fim dos resultados da pesquisa--> <!--Início da paginação--> <!--Fim da paginação--> </div> <?php require_once '../includes/footer.php'; ?>  
      Bem aí está meu código, fico muito agradecido se puderem me ajudar.
    • By luisfeliperm2
      PHP Exibe mensagem Warning mesmo tratando exceção, como impedir isto ? Na mensagem é exibida o usuário e senha do meu banco de dados
      Observe: Não quero desativar as mensagens de Warning na configuração do PHP. Quero apenas impedir que não seja mostrado essa mensagem na função de conexão com a DB


    • By Ana Miguel
      Quero selecionar o quantidade de Num_CP conforme a data atual, por isso estou usando a função GETDATE(), porém o meu SQL aponta o seguinte erro:
      Meu Código:
      BEGIN SET NOCOUNT ON; DECLARE @QUANTIDADE_CPS INT; DECLARE @D0 DATE; SET @D0 = (SELECT DATEADD(day, 0, GETDATE()) FROM VW_Vendas); SET @QUANTIDADE_CPS = (SELECT COUNT(NUM_CP) FROM VW_Vendas); SELECT CONVERT(VARCHAR,(@D0)) AS DATA_ATUAL, CONVERT(VARCHAR,(@QUANTIDADE_CPS)) AS QUANTIDADE_CPS FROM VW_Vendas VW0 WHERE VW0.DT_CRIACAO = @D0    SELECT 'RESULTADO', (     SELECT @D0 AS DATA_ATUAL, @QUANTIDADE_CPS AS QUANTIDADE_CPS FROM VW_Vendas VW0 WHERE VW0.SITUACAO_RECADO IS NOT NULL     AND VW0.SITUACAO_RECADO LIKE '%Aguardando Aprovação Cliente%' AND VW0.DT_CRIACAO = GETDATE() ) 'DATAS DIA ZERO' END GO
    • By skti
      Olá,
      preciso fazer uma query que retorne os valores os agrupando de 5 em 5 minutos. Exemplo: valor1 = 'XXX' hora = '11:13', valor2 = 'XXX' hora = '11:17', valor3 = 'XXX' hora = '11:30', valor4 = 'XXX' hora = '11:36' - Os valores valor1 e valor2 devem ficar agrupados juntos (pois estão dentro do intervalo de 5 minutos), já o valor3 e valor4, separados.
      Qualquer dúvida, só perguntar. Obrigado pela atenção.
       
      No momento minha query agrupa os valores de hora em hora:
      $sql_serv = "SELECT left(hora_cri, 2) as hora,campanha,COUNT(*) as qtd FROM ".$tabelaOperacao." WHERE data_cri = '" . $data . "' AND campanha IN ('".$campanha."') GROUP BY left(hora_cri, 2), campanha";
    • By Erika Fragoso
      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;
       
       
×

Important Information

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