Pular para o conteúdo
  • Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 7 anos, 10 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #108617
    airoosp
    Participante

      Boa tarde,

      Alguém sabe como remover ********** do resultado da consulta feita no SQLPLUS, quando se usa o compute sum?

      A C M E W I D G E T

      EMPLOYEE REPORT PAGE: 1

      DEPARTMENT LAST NAME MONTHLY SALARY
      ———- ————————- ————–
      20 Hartstein $13,000
      ********** ————–
      sum $13,000

      80 Russell $14,000
      Partners $13,500
      ********** ————–
      sum $27,500

      90 King $24,000
      Kochhar $17,000
      De Haan $17,000
      ********** ————–
      sum $58,000

      ————–
      sum $98,500
      COMPANY CONFIDENTIAL

      O resultado seria:

      A C M E W I D G E T

      EMPLOYEE REPORT PAGE: 1

      DEPARTMENT LAST NAME MONTHLY SALARY
      ———- ————————- ————–
      20 Hartstein $13,000
      ————–
      sum $13,000

      80 Russell $14,000
      Partners $13,500
      ————–
      sum $27,500

      90 King $24,000
      Kochhar $17,000
      De Haan $17,000
      ————–
      sum $58,000

      ————–
      sum $98,500
      COMPANY CONFIDENTIAL

      Obrigado.

      Airton

      #108618
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Oi : que eu saiba não tem como, o comando COMPUTE foi programado para inserir um caracter indicando qual coluna foi usada no BREAK, e foi adotado o caracter * para isso, tipo :

        SQL> set pages 50000
        SQL> column DEPTNO format 009 HEAD ‘Dep.’
        SQL> COMPUTE SUM label ‘Soma’ of sal ON DEPTNO
        SQL> break on DEPTNO nodup
        SQL> SELECT DEPTNO, ENAME, SAL from emp order by deptno;


        Dep. ENAME SAL


        010 CLARK 2450
        KING 5000
        MILLER 1300
        **** ----------
        Soma 8750
        020 JONES 2975
        FORD 3000
        ADAMS 1100
        SMITH 800
        SCOTT 3000
        **** ----------
        Soma 10875
        030 WARD 1250
        TURNER 1500
        ALLEN 1600
        JAMES 950
        BLAKE 2850
        MARTIN 1250
        **** ----------
        Soma 9400

        14 linhas selecionadas.

        SQL>

        ==> Não é o que vc quer mas só para indicar, uma possibilidade que sempre houve é vc não exibir a coluna do BREAK, assim não haverá exibição do caracter mas o COMPUTE continua funcionando :

        SQL> clear breaks;
        breaks conteúdo removido
        SQL> clear compute;
        computes conteúdo removido

        SQL> column dummy noprint
        SQL> COMPUTE SUM label “Soma” OF SAL ON DUMMY
        SQL> break on DUMMY noDUP;

        SQL> compute
        COMPUTE sum LABEL ‘Soma’ OF SAL ON DUMMY
        SQL> break
        break on DUMMY nodup


        SQL> SELECT DEPTNO as DUMMY, DEPTNO, ENAME, SAL from emp order by deptno;

        Dep. ENAME SAL


        010 CLARK 2450
        010 KING 5000
        010 MILLER 1300
        ----------
        8750
        020 JONES 2975
        020 FORD 3000
        020 ADAMS 1100
        020 SMITH 800
        020 SCOTT 3000
        ----------
        10875
        030 WARD 1250
        030 TURNER 1500
        030 ALLEN 1600
        030 JAMES 950
        030 BLAKE 2850
        030 MARTIN 1250
        ----------
        9400

        14 linhas selecionadas.

        ==> É algo mais próximo do que vc quer, imagino, MAS como agora não há BREAK por DEPTNO (só pela DUMMY) aí as repetições de DEPTNO aparecem… E comprovando que se a coluna sendo BREAKada aparece o caracter indicativo surge :

        SQL> break on DUMMY nodup on deptno nodup
        SQL> break
        break on DUMMY nodup
        on deptno nodup


        SQL> select DEPTNO as DUMMY, DEPTNO, ENAME, SAL from emp order by deptno;

        Dep. ENAME SAL


        010 CLARK 2450
        KING 5000
        MILLER 1300
        **** ----------
        8750
        020 JONES 2975
        FORD 3000
        ADAMS 1100
        SMITH 800
        SCOTT 3000
        **** ----------
        10875
        030 WARD 1250
        TURNER 1500
        ALLEN 1600
        JAMES 950
        BLAKE 2850
        MARTIN 1250
        **** ----------
        9400

        14 linhas selecionadas.

        ==> A sua resposta portanto é : até onde sei (como eu nunca precisei disso nunca fiz nenhuma pesquisa mais profunda) usando BREAK e COMPUTE não tem como vc eliminar o caracter indicador da quebra, se a coluna está sendo Exibida…..
        Assim, se vc realmente precisa usar BREAK e COMPUTE (hoje em dia a gente consegue fazer somas de grupos diretamente na query via Analytics, com **** muito mais Possibilidades e liberdade do que BREAK+COMPUTE), talvez vc possa fazer como eu fazia lá no início da carreira quando não tínhamos os recursos, que era simplesmente gerar o arquivo-texto do report normalmente e depois no Sistema Operacional (via grep, wc e comandos de manipulação de arquivo) eliminar as linas que começam com *** ….

        []s

        Chiappa

        #108619
        airoosp
        Participante

          Boa tarde Chiappa, agradeço as informações.

          Procurando mais informações sobre a geração de relatório no SQLPLUS, vi alguns exemplos e vi que é possível fazer uma formatação com HTML.

          set verify off trimspool on trimout on feedback off heading on echo off pages 100 termout off

          SET MARKUP HTML ON SPOOL ON PREFORMAT OFF ENTMAP ON –
          HEAD “Department Report

          ” –
          BODY “TEXT=’#33D4FF'” –
          TABLE “WIDTH=’90%’ BORDER=’5′”

          spool c:sqlmonitorarcurrentTime2.html

          select ‘‘||substr(to_char(sysdate,’DD/MON/YYYY HH24:MI:SS’),1,20)||’‘ as “Current Time” from dual;

          spool off
          quit

          No exemplo acima a consulta funciona mas na exibição do arquivo HTML aparece:

          06/FEV/2017 19:01:30

          Alguém já utilizou este tipo de formatação?

          Obrigado.

          Airton

          #108620
          Avatar photoJosé Laurindo Chiappa
          Moderador

            Yep, geração de comandos HTML via CSS foi introduzido no sqlplus lá pela versão 9i, há muuuuuito tempo…. Eu já utilizei algumas vezes mas para saída simples, ie, tabelinha HTML onde no máximo tem uma linha de título (e como não manjo grande coisa de CSS e/ou de HTML copiei das refs, como http://avaismohammed.blogspot.com.br/2014/08/generating-html-reports-from-oracle.html, http://ittichaicham.com/2008/12/generating-html-reports-from-sql-plus/comment-page-1/ e http://blog.tanelpoder.com/2007/08/07/sqlplus-is-my-second-home-part-1-htmlizing-your-sqlplus-output/)…. Veja lá se essas refs te ajudam… Na parte do CSS em si (que é de onde deve estar vindo os caracteres extras, de uma falha do CSS) tenta http://www.htmldog.com/guides/css/beginner/, https://www.codecademy.com/en/tracks/htmlcss e http://www.w3schools.com/css/ como Tutos….
            Outra coisa que eu nunca fiz foi MISTURAR os comandos de Reporting do sqlplus (ie, BTITLE, TTITLE, BREAK, PAGEs, etc) com o HTML markup : não sei se isso vai funcionar a contento não…

            []s

            Chiappa

            #108621
            airoosp
            Participante

              Chippa,

              Verificando os links que você passou e outras pesquisas que fiz, consegue resolver uma parte do código, mas a linha abaixo ainda não consegui fazer funcionar.

              select ‘‘||substr(to_char(sysdate,’DD/MON/YYYY HH24:MI:SS’),1,20)||’‘ as “Current Time” from dual;

              Estranho que em vários sites os exemplos são: select html tag campo from tabela.

              Fiz o teste no Firefox e Internet Explorer.

              #108622
              Avatar photoJosé Laurindo Chiappa
              Moderador

                Bom, vc poderia colocar meu conhecimento de CSS e HTML entre as teclas dum teclado que o bichinho ia funcionar ** perfeitamente ** de tão “grande” que é , mas seguindo os links que te passei (em especial o http://ittichaicham.com/2008/12/generating-html-reports-from-sql-plus/comment-page-1/) e cheguei num caso simples belezinha, sem ** NADA ** de aparecer /b nem nada assim…. Aliás, essa tag aí de acordo com https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/b ficou ***** OBSOLETA ***** faz tempo, não devia estar nem sendo usada, nem Imagino de onde vc tirou isso : e repente vc está usando um sqlplus antigão, ou está seguindo algum exemplo antigo e despreparado ?? Anyway , eis o meu exemplo :

                ==> primeiro crio uma massinha de dados :

                SQL> create table TBL_TICKETS (ID number, DESCRIPTION varchar2(30), ASSIGNED_TO varchar2(25),
                2 OPEN_DATE date, BACKLOG number);

                Tabela criada.

                SQL> insert into TBL_TICKETS values(2, ‘Compiler not work’, ‘Jim K’, ’08/Out/2008′, 76);

                1 linha criada.

                SQL> insert into TBL_TICKETS values(3, ‘Cannot access database’, ‘John F’, ’11/Nov/2008′, 42);

                1 linha criada.

                SQL> insert into TBL_TICKETS values(4, ‘Query is too slow’, ‘John F’, ’11/Dez/2008′, 12);

                1 linha criada.

                SQL> insert into TBL_TICKETS values(5, ‘System reboot unexpectedly’, ‘David K’, ’21/Dez/2008′, 2);

                1 linha criada.

                SQL> commit;

                Commit concluído.

                SQL>

                ==> aí tenho um script que faz o setup geral para HTML Markup :

                C:Usersjlchi_000>type set_markup.sql
                set markup HTML ON HEAD ” –
                body { –
                font:10pt Arial,Helvetica,sans-serif; –
                color:blue; background:white; } –
                p { –
                font:8pt Arial,sans-serif; –
                color:grey; background:white; } –
                table,tr,td { –
                font:10pt Arial,Helvetica,sans-serif; –
                text-align:right; –
                color:Black; background:white; –
                padding:0px 0px 0px 0px; margin:0px 0px 0px 0px; } –
                th { –
                font:bold 10pt Arial,Helvetica,sans-serif; –
                color:#336699; –
                background:#cccc99; –
                padding:0px 0px 0px 0px;} –
                h1 { –
                font:16pt Arial,Helvetica,Geneva,sans-serif; –
                color:#336699; –
                background-color:White; –
                border-bottom:1px solid #cccc99; –
                margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;} –
                h2 { –
                font:bold 10pt Arial,Helvetica,Geneva,sans-serif; –
                color:#336699; –
                background-color:White; –
                margin-top:4pt; margin-bottom:0pt;} –
                a { –
                font:9pt Arial,Helvetica,sans-serif; –
                color:#663300; –
                background:#ffffff; –
                margin-top:0pt; margin-bottom:0pt; vertical-align:top;} –
                .threshold-critical { –
                font:bold 10pt Arial,Helvetica,sans-serif; –
                color:red; } –
                .threshold-warning { –
                font:bold 10pt Arial,Helvetica,sans-serif; –
                color:orange; } –
                .threshold-ok { –
                font:bold 10pt Arial,Helvetica,sans-serif; –
                color:green; } –

                SQL*Plus Report” –
                BODY “” –
                TABLE “border=’1′ width=’90%’ align=’center'” –
                ENTMAP OFF SPOOL ON

                C:Usersjlchi_000>

                (infelizmente não consegui um bom exemplo de Imagem pública na internet pra usar no img src , essa que eu botei aí em cima não funcionou, o site deve estar protegido, mas não faz mal…)

                ==> aí, esse script set_markup.sql é chamado de dentro do script que eu quero que gere o SPOOL em formato HTML, que eu chamei de run_weekly_backlog_report.sql :

                C:Usersjlchi_000>type run_weekly_backlog_report.sql
                @set_markup.sql
                set pages 100
                TTITLE LEFT _DATE CENTER ‘

                Weekly Top Backlog Report : Database Team NA Region

                ‘ –
                RIGHT ‘Page:’ FORMAT 999 SQL.PNO SKIP CENTER ‘

                Red = Backlog > 30 days, Orange > 10 days

                spool backlog_report.htm

                select ‘‘||ID||’‘ ID,
                DESCRIPTION, ASSIGNED_TO, OPEN_DATE,
                CASE
                when SYSDATE-OPEN_DATE > 3040 then
                ‘||to_char(trunc(SYSDATE-OPEN_DATE))||’
                when SYSDATE-OPEN_DATE > 3000 then
                ‘||to_char(trunc(SYSDATE-OPEN_DATE))||’
                ELSE
                ‘||to_char(trunc(SYSDATE-OPEN_DATE))||’
                END BACKLOG
                from TBL_TICKETS
                order by SYSDATE-OPEN_DATE DESC;

                spool off

                exit
                /

                ==> veja que é no CSS que vc coloca o atributo de BOLD, de Fonte do que quiser : tenho elementos no meu CSS que fazem o texto ficar em cores diferentes, com pesos diferentes…
                Muito bem, vou executar o script de report – veja que ele ** TEM ** que ser rodado a partir da Linha de Comando, e portanto TEM que ter um EXIT no final : é tal que nem eu fiz no meu exemplo de geração de arquivo delimitado que dei numa Outra pergunta do Fórum….

                C:Usersjlchi_000>sqlplus scott/tiger @run_weekly_backlog_report.sql

                ==> Veja que o script vai rodar e vai jogar uns outputs na tela, nenhum deles importa :

                SQL*Plus: Release 11.2.0.2.0 Production on Ter Fev 7 18:19:57 2017

                Copyright (c) 1982, 2014, Oracle. All rights reserved.

                Conectado a:
                Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production

                07/02/17

                Weekly Top Backlog Report : Database Team NA Region

                …..
                21/12/08
                2970

                Desconectado de Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production

                ==> Veja que ele ** gerou ** o desejado arquivo em format HTML :

                C:Usersjlchi_000>dir *.htm
                O volume na unidade C não tem nome.
                O Número de Série do Volume é 340C-E794

                Pasta de C:Usersjlchi_000

                07/02/2017 18:19 3.071 backlog_report.htm
                1 arquivo(s) 3.071 bytes
                0 pasta(s) 480.876.212.224 bytes disponíveis

                C:Usersjlchi_000>

                ==> aí abrindo o arquivo no Firefox eu vejo colunas em vermelho, em laranja, em bold e com FOntes específicas… Ó o printscreen :

                View post on imgur.com

                Espero que esse exemplinho te seja útil, okdoc ??

                Abraços,

                José Laurindo Chiappa

                OBS : eu usei o sqlplus que vêm com o database Oracle Express Edition 11gR2…

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress