[oracle_br] Pesquisa de vagas no exterior
Pessoal, Bom dia. Alguém conhece algum site legal de pesquisa de vagas no exterior? Gostaria de saber como é o mercado de trabalho na Austrália. Muito obrigado. -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26
Re: [oracle_br] Re: Pesquisa de vagas no exterior
Obrigado, Chiappa. Em 29 de junho de 2015 09:14, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Vc pode começar a sua pesquisa por genéricos como http://www.seek.com.au/ , http://www.adzuna.com.au/ , http://www.careerone.com.au/ ou http://www.careerjet.com.au/ , headhunters como http://www.robertwalters.com.au/ , especializados como https://au.jora.com/ , e guias de trabalho http://www.migrationexpert.com.au []s Chiappa -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26
Re: [oracle_br] Dúvida de SQL
Bom dia talvez usando um Union resolva o seu problema... exemplo q fiz testando com uma tabela teste.. select count(1) ,t1.seq from teste t1 group by t1.seq having count(1) = 2 union all select count(1) ,t2.seq from teste t2 group by t2.seq having count(1) = 3 union all select count(1) ,t3.seq from teste t3 group by t3.seq having count(1) = 4 Em 12 de junho de 2013 09:03, Jales Jose Moraes malphig...@yahoo.com.brescreveu: ** Pessoal me desculpem se a pergunta parece básica, mas vejam bem GROUP BY man.nu_seq_conselho HAVING COUNT (*) = 14 and COUNT (*) = 28 and COUNT (*) = 42) Eu preciso que o count(*) me retorne o agrupamento de 14,28 ou 42, porque a consulta correta é da forma acima? Eu não deveria usar o OR no lugar do AND? Quando troco pelo OR me traz milhares de registros que não refletem a realidade da operação! [As partes desta mensagem que não continham texto foram removidas] -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Ajuda com a clausula IN
Bom dia, Assim não funcionária? v_cpf_inferior := '21548649854'|| ',' || '94586154880'; Att. Leonardo Silva. Em 29 de agosto de 2012 08:30, Jales Jose Moraes malphig...@yahoo.com.brescreveu: ** Boa dia, Preciso de ajuda. Como faço para o IN funcionar com uma variável? declare v_cpf_inferior varchar2(100); v_mensagemVARCHAR2 (1); begin v_cpf_inferior := '''21548649854'',''94586154880'''; SELECT MAX(NU_CPF) INTO V_MENSAGEM FROM sus_compra.tab_requisitos_cpf WHERE nu_cpf in (v_cpf_inferior); dbms_output.put_line('v_mensagem ' || v_mensagem ); end; Spool v_mensagem 1 - numerocpf : 25521659153 v_cpf_inferior : '21446059120','10743876865' SQL%ROWCOUNT : 0 [As partes desta mensagem que não continham texto foram removidas] -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Ajuda com Spool
Pessoal Em relação aos parametros funcionou tudo ok. . Só mais uma duvida, existe algum jeito de ocultar no spool pra ele não aparecer assim: Enter value for 3: Enter value for 4: Enter value for 5: Enter value for 6: Enter value for 8: Só depois de ele reclamar que eu deixei os parametros em branco que ele executa o restante do spool ... Existe algum jeito de ocultar isso? Obrigado mais uma vez.. Banco versao = 10.1.0.3.0 O spool ta sendo gerado assim: set echo off set verify off set feedback off set term off set pagesize 66 -- set recsep each set space 1 set newpage 0 set linesize 130 set recsep off define DEPLA=PREVIA col CNREC format 99 HEADING 'Rec. Num' col ART_NO format 99 HEADING 'Artigo' col DESCR format A30HEADING 'Descrição' col SUPPL_NO format 9 HEADING 'Fornecedor' col QTD_ARTformat 9 HEADING 'Qtd' col DT_SHELF_LIFE format B9990D99 HEADING 'Vencim. Data' col NMUSR format 999HEADING 'Respons. Liberação' col data format A19NEW_VALUE data NOPRINT select TO_CHAR(sysdate,'DD/MM/YY hh24:mi:ss') data from store; ttitle left 'RM225' - center 'RELATÓRIO, RECEBIMENTO POR VENCER - ' format 09 LOJA - 2 skip 2 right data ' / Pag: ' format 999 sql.pno skip 2 left '' - skip 2 CLEAR BREAK spool 1 whenever sqlerror exit sql.sqlcode; SELECT A.CNREC CNREC ,A.ART_NO ART_NO ,B.DESCR DESCR ,A.SUPPL_NOSUPPL_NO ,A.QTD_ART QTD_ART ,TO_CHAR(A.DT_SHELF_LIFE, 'DD/MM/') DT_SHELF_LIFE ,A.NMUSR NMUSR FROM SHELF_LIFE_HIST A ,ARTICLE B WHERE A.CNREC = NVL(TO_NUMBER('3') ,A.CNREC) AND A.ART_NO = NVL(TO_NUMBER('4') ,A.ART_NO) AND A.SUPPL_NO= NVL(TO_NUMBER('5') ,A.SUPPL_NO) AND A.QTD_ART = NVL(TO_NUMBER('6') ,A.QTD_ART) AND A.NMUSR = NVL(TO_NUMBER('8') ,A.NMUSR) AND A.ART_NO = B.ART_NO ORDER BY CNREC, DT_SHELF_LIFE; SET EMBEDDED ON SET RECSEP EACH set space 10 CLEAR BREAK set heading off select rpad ('.',96,'.') from dual ; spool off exit; 2012/4/26 Étore Schiavini et...@snpti.com.br ** Leonardo Substitua A.NMUSR = NVL('8' ,A.NMUSR) por ( '8' IS NULL or A.NMUSR = 8' ) Étore Schiavini mailto:et...@schiavini.inf.br et...@schiavini.inf.br 51 8116.4858 From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] On Behalf Of Leonardo Silva Sent: quinta-feira, 26 de abril de 2012 17:05 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Ajuda com Spool Boa tarde pessoal, Novamente nessito da ajuda de vocês, eu inseri a seguinte query dentro de um spool: SELECT A.CNREC CNREC ,A.ART_NO ART_NO ,A.SUPPL_NO SUPPL_NO ,A.QTD_ART QTD_ART ,A.DT_SHELF_LIFE DT_SHELF_LIFE ,A.NMUSR NMUSR FROM SHELF_LIFE_HIST A WHERE A.CNREC = NVL('3' ,A.CNREC) AND A.ART_NO = NVL('4' ,A.ART_NO) AND A.SUPPL_NO = NVL('5' ,A.SUPPL_NO) AND A.QTD_ART = NVL('6' ,A.QTD_ART) AND A.DT_SHELF_LIFE = NVL('7' ,A.DT_SHELF_LIFE) AND A.NMUSR = NVL('8' ,A.NMUSR); porém eu não consigo executar o spool se eu mandar os parametros em branco, alguém poderia me dar alguma dica de como fazer funcionar mesmo que eu mande os parametros em branco? Versão do banco: 10.1.0.3.0 Desde já agradeço pela atenção. -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do
Re: [oracle_br] Re: Ajuda com Spool
Valeu pela dica Milton, Eu tentei mais não deu certo ... hehehehe Em 26 de abril de 2012 18:38, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: ** tentou digitar null nos parametros pra ver se funciona?? rs... On Thu, Apr 26, 2012 at 6:31 PM, Leonardo Silva leonardo.dr...@gmail.com wrote: Zilmar, Obrigado pela resposta .. Porém, eu quero utilizar o Spool sem usar parametros, gostaria de saber se é possivel, se eu colocar os parametros como você citou, o spool executa corretamente, como você pode ver na query eu coloquei NVL para que se o parametro estiver nulo, ele faça join com o próprio campo e traga todos os resultados, talvez não tenha ficado muito claro, mais essa é a minha duvida. Obrigado. Em 26 de abril de 2012 18:18, Zilmar Furquim zfurq...@ig.com.br escreveu: ** Leonardo, -Grave a sua query num arquivo com a extensão .SQL -No prompt do sqlplus digite @nome_do_arquivo.SQL seguido de cada um dos parâmetros separados por espaços. -Exemplo: @arquivo.sql 1 2 3 4 5 6 7 8 Abs, Zilmar Furquim Synchro Systems --- Em oracle_br@yahoogrupos.com.br, Leonardo Silva leonardo.drums@ ... escreveu Boa tarde pessoal, Novamente nessito da ajuda de vocês, eu inseri a seguinte query dentro de um spool: SELECT A.CNREC CNREC ,A.ART_NO ART_NO ,A.SUPPL_NO SUPPL_NO ,A.QTD_ART QTD_ART ,A.DT_SHELF_LIFE DT_SHELF_LIFE ,A.NMUSR NMUSR FROM SHELF_LIFE_HIST A WHERE A.CNREC = NVL('3' ,A.CNREC) AND A.ART_NO = NVL('4' ,A.ART_NO) AND A.SUPPL_NO = NVL('5' ,A.SUPPL_NO) AND A.QTD_ART = NVL('6' ,A.QTD_ART) AND A.DT_SHELF_LIFE = NVL('7' ,A.DT_SHELF_LIFE) AND A.NMUSR = NVL('8' ,A.NMUSR); porém eu não consigo executar o spool se eu mandar os parametros em branco, alguém poderia me dar alguma dica de como fazer funcionar mesmo que eu mande os parametros em branco? Versão do banco: 10.1.0.3.0 Desde já agradeço pela atenção. -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Re: Ajuda com Spool
Chippa.. Mais uma vez muito obrigado.. Funcionou perfeitamente. Atenciosamente. Leonardo Silva. Em 26 de abril de 2012 19:08, J. Laurindo Chiappa jlchia...@yahoo.com.brescreveu: ** Colega, o que acontece é que a substituição de valores no sqlplus é LITERAL : o sqlplus substitui mesmo no texto a ser enviado para o banco EXATAMENTE o que vc informou : o sql*plus é um programa-cliente, ele é INCAPAZ de analisar textos de SQL, necessariamente NADA é executado nele, ele apenas ENVIA o texto para o database, que é quem o pode interpretar ... Assim, se vc tiver no script, digamos, uma condição de WHERE assim : WHERE ... AND sal = NVL(3, sal) o texto que vai ser enviado para o banco é : WHERE ... and sal = nvl( , sal) o que vai acontecer é que : a) o NVL *** NÃO *** vai ser executado, já que o sqlplus é incapaz disso b) a variável 3 tem um valor de vazio, vazio é o que será substituído na string de texto SQL a ser enviado para o database para posterior interpretação... É ** LITERAL ** mesmo, pense na variável lexical como algo que vai ser Substituído no texto do SQL pelo sqlplus Há vários work-arounds possíveis , tais como (por exemplo) mandar um SQL para o database que via comando COLUMN NEW_VALUE substitua o NULL por algo apripriado (cfrme http://www.freelists.org/post/oracle-l/sqlplus-substitution-variables,9mostra), mas eu prefiro outra técnica : ter aspas-simples (plics) em volta das variáveis, de modo que os valores todos sejam tratados como string... Dessa forma, no meu exemplo anterior , o texto que iria para o database se a variável 3 fosse nula seria : WHERE ... and sal = nvl('' , sal) o que aí Sim funciona, strings vazias do tipo são de-nulificadas com NVL... Uma demonstração : set term off feedback off verify off pages 0 lines 500 trimspool on head off spool result.txt select deptno, empno, ename, job, sal from emp where deptno = nvl(to_number('1') , deptno) and job = nvl('2', job) and sal = nvl(to_number('3') , sal) ; spool off exit / === Execuções (como eu estou testando no Windows, uso para indicar string vazia em prompt de comando) : = primeiro caso, não passando nenhum valor : C:\Users\jchiappasqlplus -s scott/tiger @test_spool.sql C:\Users\jchiappatype result.txt 20 7369 SMITH CLERK 800 30 7499 ALLEN SALESMAN 1600 30 7521 WARD SALESMAN 1250 20 7566 JONES MANAGER 2975 30 7654 MARTIN SALESMAN 1250 30 7698 BLAKE MANAGER 2850 10 7782 CLARK MANAGER 2450 20 7788 SCOTT ANALYST 3000 10 7839 KING PRESIDENT 5000 30 7844 TURNER SALESMAN 1500 20 7876 ADAMS CLERK 1100 30 7900 JAMES CLERK 950 20 7902 FORD ANALYST 3000 10 7934 MILLER CLERK 1300 C:\Users\jchiappa = segundo, passando um valor para param1 : C:\Users\jchiappasqlplus -s scott/tiger @test_spool.sql 10 C:\Users\jchiappatype result.txt 10 7782 CLARK MANAGER 2450 10 7839 KING PRESIDENT 5000 10 7934 MILLER CLERK 1300 = passando valores para params 1 e 2 apenas : C:\Users\jchiappasqlplus -s scott/tiger @test_spool.sql 10 PRESIDENT C:\Users\jchiappatype result.txt 10 7839 KING PRESIDENT 5000 = valorando params 1,2 e 3 : C:\Users\jchiappasqlplus -s scott/tiger @test_spool.sql 10 PRESIDENT 1000 C:\Users\jchiappatype result.txt 10 7839 KING PRESIDENT 5000 = apenas params 2 e 3 , veja que a linha com JOB=CLERK com salario menor que 1000 não veio : C:\Users\jchiappasqlplus -s scott/tiger @test_spool.sql CLERK 1000 C:\Users\jchiappatype result.txt 20 7876 ADAMS CLERK 1100 10 7934 MILLER CLERK 1300 = valorando apenas param3, veja que os NVLs enviados para o banco funcionaram : C:\Users\jchiappasqlplus -s scott/tiger @test_spool.sql 1000 C:\Users\jchiappatype result.txt 30 7499 ALLEN SALESMAN 1600 30 7521 WARD SALESMAN 1250 20 7566 JONES MANAGER 2975 30 7654 MARTIN SALESMAN 1250 30 7698 BLAKE MANAGER 2850 10 7782 CLARK MANAGER 2450 20 7788 SCOTT ANALYST 3000 10 7839 KING PRESIDENT 5000 30 7844 TURNER SALESMAN 1500 20 7876 ADAMS CLERK 1100 20 7902 FORD ANALYST 3000 10 7934 MILLER CLERK 1300 === a prova final, os SQLs que o sqlplus mandou para o banco : SYSTEM@O10GR2::SQLselect sql_text from v$sql where sql_text like 'select deptno, empno, ename, job, sal from emp%' order by last_active_time; SQL_TEXT -- select deptno, empno, ename, job, sal from emp where deptno = nvl(to_number('') , deptno) and job = nvl('', job) and sal = nvl(to_number('') , sal) select deptno, empno, ename, job, sal from emp where deptno = nvl(to_number('10') , deptno) and job = nvl('', job) and sal = nvl(to_number('') , sal) select deptno, empno, ename, job, sal from emp where deptno = nvl(to_number('10') , deptno) and job = nvl('PRESIDENT', job) and sal = nvl(to_number('') , sal) select deptno, empno, ename, job, sal from emp where deptno = nvl(to_number('10') , deptno) and job = nvl('PRESIDENT', job) and sal = nvl(to_number('1000') , sal) select deptno, empno
Re: [oracle_br] Re: Ajuda com programa em Pro-c
Pessoal, Obrigado pela ajuda... O problema está na maneira em como eu adicionei o campo ... Eu adicionei dessa maneira : tb_log_shelf_life.arr[tb_log_shelf_life.len]='\0'; E ai compilou 2012/4/24 Josinei josinei_barb...@yahoo.com.br ** Leonardo, além do que o Chiappa disse, analise se você não possui nesse programa, referências à objetos remotos (via DB Link). Digo isso, porque já vi esse problema e depois de muita análise e teste, descobrimos que era por causa de alguma incompatibilidade do compilador Pro*C do Linux com objetos remotos (acessados via DBLink) criado em bancos de dados Oracle 10g (com a versão 8i não acontecia). No nosso caso, tínhamos dois ambientes: um Linux Red Hat com Oracle 10g e um Solaris 8 com Oracle 8i. No Solaris 8 compilava sem problemas. A incompatibilidade era só no Linux. O nosso programa, acessava uma tabela em um banco de dados remoto (via DBLink). A SOLUÇÃO foi criarmos uma view apontando para a tabela remota e um sinônimo (de mesmo nome) para a view. O programa passou a referenciar esse sinônimo e o problema não ocorreu mais. Após isso, adotamos essa prática como padrão em acessos remotos. Atenciosamente, Josinei Barbosa --- Em oracle_br@yahoogrupos.com.br, J. Laurindo Chiappa jlchiappa@... escreveu Colega, esse programinha é um tantinho longo, então nos dois minutos no máximo que eu sempre dedico a qquer pergunta não consegui destrinchá-lo na íntegra (e nem é o objetivo aqui), mas o que eu posso dizer é que na linguagem C (pro*c nada mais é do que um pre-processador, um carinha que enfia umas chamadas de libs específicas antes de gerar um fonte C) normalmente segmentation fault, invalid pointers e erros do tipo muitas vezes decorrem de algum array/variável em que vc está tentando colocar mais conteúdo do que o declarado - um byte que seja, se vc tem uma área de x caracteres e tentar colocar lá x+1 tipicamente ou o seu programa abenda... Assim, minha primeira recomendação é que vc CONFIRA detalhadamente cada posição E o tamanho total das tuas áreas de armazenamento, como a format_artcom e as r_key1 e r_key2 []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Leonardo Silva leonardo.drums@ escreveu Bom dia Pessoal, Gostaria de saber se alguém no grupo conhece pro-c, nunca havia trabalhado com esse tipo de programação antes porém agora necessito de fazer algumas alterações em alguns que temos aqui, efetuei as alterações necessárias porém na hora de executar o programa ele me exibe um erro = Segmentation fault . Esse programa gera um arquivo em um determinado diretório, e eu adicionei mais uma coluna no mesmo ... O programa está sendo executado em uma base 10G, versão do banco = 10.2.0.4.0 .. Se alguém puder me dar alguma dica será muito bem vinda.. abaixo o programa .. char *ident = @(#) ct_artcom.pc V1.2 (03/2008); char *copyright = @(#) Copyright Makro International AG, Aspermontstrasse 24, 7006 CHUR, Switzerland; /* Compilation directive that defines if debug information, for */ /* version v.2.27, will be redirect to stderr. */ /*#define DEBUG227 1 */ #include stdio.h #include stdlib.h #include math.h #ifdef DEBUG227 #include time.h #endif /* #define DEBUG */ #include makro.h #define SQLCA_INIT 1 EXEC SQL INCLUDE SQLCA.H; #define ORACA_INIT 1 EXEC SQL INCLUDE ORACA.H; EXEC SQL BEGIN DECLARE SECTION; VARCHAR oracleid[30]; int param_store_no; /* get store param */ int save; /* SHADOW data */ VARCHAR r_key1[100][82], r_key2[100][82]; int art_no; int store_no; int st_no; /* ARTICLE data */ VARCHAR descr[34]; /* ST_ARTICLE data */ /* TB_SEQ_NO NOT NULL NUMBER(6) */ /* TB_ACTION NOT NULL VARCHAR2(1) */ int tb_cnart ; /* NOT NULL NUMBER(7) */ VARCHAR tb_deart[34] ; /* VARCHAR2(33) */ int tb_cngrp ; /* NUMBER(3) */ int tb_cnsubgrp ; /* NUMBER(2) */ int tb_cncom ; /* NUMBER(3) */ int tb_qtunimak ; /* NUMBER(4) */ int tb_qtunifor ; /* NUMBER(4) */ VARCHAR tb_catipemb[3] ; /* VARCHAR2(2) */ VARCHAR tb_careffor[15] ; /* VARCHAR2(11) */ int tb_cnartpri ; /* NUMBER(7) */ int tb_qtminped ; /* NUMBER(5) */ int tb_capes ; /* NUMBER(1) */ int tb_bosug ; /* SEG/TER/QUA/QUI/SEX NUMBER(5) */ VARCHAR tb_boemidsp[2] ; /* VARCHAR2(1) */ VARCHAR tb_cafrqsug[2] ; /* VARCHAR2(1) */ VARCHAR tb_casaz [12] ; /* VARCHAR2(12) */ VARCHAR tb_catipart[2] ; /* VARCHAR2(1) */ int tb_cntipimp ; /* NUMBER(1) */ double tb_vcvas ; /* NUMBER(11,2) */ VARCHAR tb_cactgart[2] ; /* VARCHAR2(1) */ VARCHAR tb_boaro[2] ; /* VARCHAR2(1) */ int tb_cnipi ; /* NUMBER(1) */ double tb_vcipi ; /* NUMBER(11,2) */ VARCHAR tb_boembins[2] ; /* VARCHAR2(1) */ int tb_cnfor ; /* NUMBER(5) */ int tb_cnfilfor ; /* NUMBER(4) */ int tb_cntipicm ; /* NUMBER(1) */ int tb_cnalicom ; /* NUMBER(1) */ int tb_cnaliven
Re: [oracle_br] Duvida na ordenação
Obrigado pelo retorno pessoal. Milton, Eu entendi o que você quis dizer sim, e realmente, quando tiver valor positivo não tem negativo e assim sucessivamente... Eu tentei aplicar o que você comentou porém não fui muito feliz, ou não tenha entendido direito, segue abaixo a alteração que fiz... * SELECT * A.CNAJU , A.DEAJU , A.CNLIB , A.ANUSR , A.VCCUSAJU, A.CATIPAJU , A.DTAJU, A.CNFOR, A.CNGRP, A.DEART, A.QTUNIMAK, A.CATIPEMB, A.QTINIDIA, A.QTINIAJU, A.QTAJUORI , A.VCCUSNEG , A.VCCUSPOS , abs(A.VCCUSNEG) teste, abs(a.VCCUSPOS) teste2, A.CNART, A.QTAJU, A.VCCUSTOT *FROM* ( *SELECT* A.CNAJU CNAJU ,D.DEAJU DEAJU ,A.CNLIB CNLIB ,A.ANUSR ANUSR ,A.VCCUSAJU VCCUSAJU ,A.CATIPAJU CATIPAJU ,TO_CHAR(DTAJU, 'DD/MM/YY') DTAJU ,B.CNFOR CNFOR ,C.ART_GRP_NO CNGRP ,C.DESCR DEART ,C.CONT_SELL_UNIT QTUNIMAK ,C.PACK_TYPE CATIPEMB ,C.MM_ON_ORDER QTINIDIA ,C.MM_ON_ORDER + B.QTAJU QTINIAJU ,B.QTAJUORI QTAJUORI ,DECODE(SIGN(B.QTAJU),-1,QTAJU * B.VCCUSAJU,0) VCCUSNEG ,DECODE(SIGN(B.QTAJU),-1,0,QTAJU * B.VCCUSAJU) VCCUSPOS ,B.CNART CNART ,B.QTAJU QTAJU ,E.VCCUSNEG + E.VCCUSPOS VCCUSTOT *FROM* RMCABAJU A, RMDETAJU B, ARTICLE C, CETIPAJU D,RMFORAJU E *WHERE* A.CNAJU = B.CNAJU *AND* B.CNART = C.ART_NO *AND* A.CATIPAJU = D.CATIPAJU *AND* B.CNFOR = D.CNFOR *AND* B.CNFOR = E.CNFOR *AND* A.CNAJU = E.CNAJU *AND* A.CNAJU = 629003) A *ORDER* *BY* TESTE, TESTE2 Em 20 de abril de 2012 10:15, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: Esses valores estão em campos diferentes, um campo só contem positivos e o outro só negativos, correto? VCCUSPOS = positivos VCCUSNEG = negativos Portanto vc não pode ordenar dessa maneira, colocando os dois campos no order by. Da maneira que está, ele ordena primeiro pelo positivo, e só ordena pelo negativo (desc) quando os positivos forem iguais. Uma pergunta importante: nos seus registros, pode existir valores nos dois campos num mesmo registro? Ou vc só tem valor em UM dos dois? Se tiver valor em só um dos dois - que é o caso onde faz sentido vc fazer essa ordenação, vc pode criar uma coluna virtual, recebendo o ABS() da coluna que estiver preenchida, e mandar ordenar por esta coluna. E aí ela não precisa aparecer no SELECT, ela pode ficar somente no order by. Fui muito confuso? Deu pra entender? On Fri, Apr 20, 2012 at 10:00 AM, Leonardo Silva leonardo.dr...@gmail.comwrote: ** Bom dia Pessoal Estou precisando fazer uma ordenação da seguinte maneira, porém não estou conseguindo evoluir muito nas minhas tentativas, o que eu preciso é o seguinte. Eu tenho uma query que traz informações de vendas, e nessa query eu tenhos os campos: valor_positivo e valor_negativo, e preciso efetuar a ordenação da mesma da seguinte maneira: valor_negativo valor_positivo 397,44 -208,20 27,96 -24,80 Alguém tem alguma idéia para que eu possa resolver esse tipo de situação, já tentei utilizar a função Abs pra deixar os valores absolutos, porém não funcionou na hora de ordenar ele sempre ordena do maior pro menor levando em consideração os valores negativos e deixando os mesmos no final dos resultados. A versão do banco é 10.1.0.3.0. Desde já agradeço pela ajuda. Abaixo a query que estou executando. * select * A.CNAJU CNAJU ,D.DEAJU DEAJU ,A.CNLIB CNLIB ,A.ANUSR ANUSR ,A.VCCUSAJU VCCUSAJU ,A.CATIPAJU CATIPAJU ,TO_CHAR(DTAJU, 'DD/MM/YY') DTAJU ,B.CNFOR CNFOR ,C.ART_GRP_NO CNGRP ,C.DESCR DEART ,C.CONT_SELL_UNIT QTUNIMAK ,C.PACK_TYPE CATIPEMB ,C.mm_ON_ORDER QTINIDIA ,C.mm_ON_ORDER + b.QTAJU QTINIAJU ,B.QTAJUORI QTAJUORI ,DECODE(sign(b.qtAJU),-1,QTAJU * B.VCCUSAJU,0) VCCUSNEG ,DECODE(sign(b.QTAJU),-1,0,QTAJU * B.VCCUSAJU) VCCUSPOS ,B.CNART CNART ,B.QTAJU QTAJU ,E.VCCUSNEG + E.VCCUSPOS VCCUSTOT *FROM* RMCABAJU A, RMDETAJU B, ARTICLE C, CETIPAJU D,RMFORAJU E *WHERE* A.CNAJU = B.CNAJU *AND* B.CNART = C.ART_NO *AND* A.CATIPAJU = D.CATIPAJU *AND* B.CNFOR = D.CNFOR *AND* B.CNFOR = E.CNFOR *AND* A.CNAJU = E.CNAJU *AND* A.CNAJU = 629003 *ORDER* *BY* VCCUSPOS,VCCUSNEG *DESC*; -- Atenciosamente Leonardo Silva E da mesma maneira também o Espírito ajuda as nossas fraquezas; porque não sabemos o que havemos de pedir como convém, mas o mesmo Espírito intercede por nós com gemidos inexprimíveis.Romanos 8:26 [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br
Re: [oracle_br] Duvida na ordenação
Muito obrigado pela ajuda pessoal.. Milton, perfeito... Abs Em 20 de abril de 2012 10:57, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: Bom dia Alessandro! Então, eu mandei a query definitiva em outro e-mail, não sei se vc chegou a ler... Não ficou muito claro se ele quer MOSTRAR os valores em uma coluna só, ou se o que interessa pra ele é somente a ordenação. Eu entendi que ele queria somente a ordenação. De qualquer maneira, se ele quiser mostrar uma coluna com o valor que está sendo considerado, é isso mesmo que vc fez ! Acho que essa é a parte fácil da query depois que a ordenação já está feita... rs... Abraço! http://certificacaobd.com.br On Fri, Apr 20, 2012 at 10:48 AM, Alessandro Lúcio Cordeiro da Silva alecordeirosi...@yahoo.com.br wrote: ** Olá Milton, sua solução esta quase perfeita, so que o Leandro queria mostar os numeros negativos, por isso so acrecentei s sua query para fazer o order by e mostrar o numero original. select pos, neg, abs(neg), decode(pos, 0, neg, pos) valorfrom teste_valororder bydecode(pos, 0, abs(neg), pos) desc Alessandro Lúcio Cordeiro da Silva Analista de Sistema þ http://alecordeirosilva.blogspot.com/ O tic-tac do relógio me lembra de algo muito importante que esta acontecendo: estamos vivos. Joana de Souza Schmitz Croxato De: Milton Bastos Henriquis Jr. miltonbas...@gmail.com Para: oracle_br@yahoogrupos.com.br Enviadas: Sexta-feira, 20 de Abril de 2012 9:35 Assunto: Re: [oracle_br] Duvida na ordenação CREATE TABLE TESTE_VALOR ( POS NUMBER(8, 2) , NEG NUMBER(8, 2) ); insert into teste_valor values (100, 0); insert into teste_valor values (0, -150); insert into teste_valor values (200, 0); insert into teste_valor values (0, -250); insert into teste_valor values (0, -1200); insert into teste_valor values (1900, 0); select * from teste_valor; select pos, neg, abs(neg), decode(pos, 0, abs(neg), pos) valor from teste_valor order by valor desc; Att, Milton Bastos http://certificacaobd.com.br On Fri, Apr 20, 2012 at 10:29 AM, Leonardo Silva leonardo.dr...@gmail.comwrote: ** Obrigado pelo retorno pessoal. Milton, Eu entendi o que você quis dizer sim, e realmente, quando tiver valor positivo não tem negativo e assim sucessivamente... Eu tentei aplicar o que você comentou porém não fui muito feliz, ou não tenha entendido direito, segue abaixo a alteração que fiz... * SELECT * A.CNAJU , A.DEAJU , A.CNLIB , A.ANUSR , A.VCCUSAJU, A.CATIPAJU , A.DTAJU, A.CNFOR, A.CNGRP, A.DEART, A.QTUNIMAK, A.CATIPEMB, A.QTINIDIA, A.QTINIAJU, A.QTAJUORI , A.VCCUSNEG , A.VCCUSPOS , abs(A.VCCUSNEG) teste, abs(a.VCCUSPOS) teste2, A.CNART, A.QTAJU, A.VCCUSTOT *FROM* ( *SELECT* A.CNAJU CNAJU ,D.DEAJU DEAJU ,A.CNLIB CNLIB ,A.ANUSR ANUSR ,A.VCCUSAJU VCCUSAJU ,A.CATIPAJU CATIPAJU ,TO_CHAR(DTAJU, 'DD/MM/YY') DTAJU ,B.CNFOR CNFOR ,C.ART_GRP_NO CNGRP ,C.DESCR DEART ,C.CONT_SELL_UNIT QTUNIMAK ,C.PACK_TYPE CATIPEMB ,C.MM_ON_ORDER QTINIDIA ,C.MM_ON_ORDER + B.QTAJU QTINIAJU ,B.QTAJUORI QTAJUORI ,DECODE(SIGN(B.QTAJU),-1,QTAJU * B.VCCUSAJU,0) VCCUSNEG ,DECODE(SIGN(B.QTAJU),-1,0,QTAJU * B.VCCUSAJU) VCCUSPOS ,B.CNART CNART ,B.QTAJU QTAJU ,E.VCCUSNEG + E.VCCUSPOS VCCUSTOT *FROM* RMCABAJU A, RMDETAJU B, ARTICLE C, CETIPAJU D,RMFORAJU E *WHERE* A.CNAJU = B.CNAJU *AND* B.CNART = C.ART_NO *AND* A.CATIPAJU = D.CATIPAJU *AND* B.CNFOR = D.CNFOR *AND* B.CNFOR = E.CNFOR *AND* A.CNAJU = E.CNAJU *AND* A.CNAJU = 629003) A *ORDER* *BY* TESTE, TESTE2 Em 20 de abril de 2012 10:15, Milton Bastos Henriquis Jr. miltonbas...@gmail.com escreveu: Esses valores estão em campos diferentes, um campo só contem positivos e o outro só negativos, correto? VCCUSPOS = positivos VCCUSNEG = negativos Portanto vc não pode ordenar dessa maneira, colocando os dois campos no order by. Da maneira que está, ele ordena primeiro pelo positivo, e só ordena pelo negativo (desc) quando os positivos forem iguais. Uma pergunta importante: nos seus registros, pode existir valores nos dois campos num mesmo registro? Ou vc só tem valor em UM dos dois? Se tiver valor em só um dos dois - que é o caso onde faz sentido vc fazer essa ordenação, vc pode criar uma coluna virtual, recebendo o ABS() da coluna que estiver preenchida, e mandar ordenar por esta coluna. E aí ela não precisa aparecer no SELECT, ela pode ficar somente no order by. Fui muito confuso? Deu pra entender? On Fri, Apr 20, 2012 at 10:00 AM, Leonardo Silva leonardo.dr...@gmail.comwrote
Re: [oracle_br] Erro ao compilar procedure no Oracle
Pessoal, Muito obrigado pelo retorno. Segui todas as dicas e nada resolveu, comentei a parte em que se econtram os cases, e o programa compilou ... Tirei a query inteira da procedure e executei por fora, e a query funciona normalmente com os cases. Analisei a identação como sugerido e não consegui encontrar, existe alguma restrição quanto ao uso do case dentro da proc? Desde já agradeço pela ajuda! Obrigado. 2012/4/18 Milton Bastos Henriquis Jr. miltonbas...@gmail.com Não tenho certeza, mas achei bem confuso vc usar um CASE dentro de outro CASE, que está dentro de um DECODE. ... DECODE( CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' WHEN LENGTH(D.CACGC) = 14 THEN CASE WHEN E.NMNFS 0 AND E.NMCUPFIS = 0 THEN 'EMP' WHEN E.NMNFS = 0 AND E.NMCUPFIS 0 THEN 'CFI' WHEN LENGTH(D.CACGC) = 11 THEN CASE .. Acho que alguma dessas lógicas talvez não seja permitida, é melhor vc melhorar esse algoritmo! On Wed, Apr 18, 2012 at 11:17 AM, Leonardo Silva leonardo.dr...@gmail.comwrote: ** Pessoal, Bom dia, Estou tentando compilar a procedure abaixo, porém está dando erro na linha do caso, o select executa normalmente, porém ao tentar criar uma procedure utilizando o mesmo eu tenho o seguinte erro: Compilation errors for PROCEDURE OPS$STOREP.TESTE_LEO Error: PLS-00103: Encontrado o simbolo CASE quando um dos seguintes simbolos era esperado: ( - + mod null an identifier a double-quoted delimited-identifier a bind variable avg count current max min prior sql stddev sum variance execute forall time timestamp interval date a string literal with character set specification a number a single-quoted SQL string Line: 22 Text: CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' Abaixo o código: Grato pela ajuda. create or replace procedure teste_leo is BEGIN DECLARE VL_SEQREG NUMBER; W_DTDIA DATE; VL_MESANT NUMBER; VL_CNLOJ NUMBER; CURSOR C_RM805L21 IS SELECT ANAREDAD FROM ( SELECT DISTINCT TO_CHAR(A.LOJCLI,'009') ||' '|| RPAD(DECODE (A.TPDEV, 1,'AUTORIZACAO DE CREDITO', 2 , 'TROCA SIMPLES'),22) || ' ' || TO_CHAR(A.DTEMIS,'DD/MM/') || ' ' || RPAD(A.USERINC, 15) || ' ' || RPAD(UPPER(A.STATUS), 15) || '' || RPAD(A.NROSEQ,6)|| '' || TO_CHAR(A.VALOR,'99D99')|| ' ' || A.NFISCAL || '-' || A.NFSER ||' '|| --DECODE( CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' WHEN LENGTH(D.CACGC) = 14 THEN CASE WHEN E.NMNFS 0 AND E.NMCUPFIS = 0 THEN 'EMP' WHEN E.NMNFS = 0 AND E.NMCUPFIS 0 THEN 'CFI' WHEN LENGTH(D.CACGC) = 11 THEN CASE WHEN E.NMNFS 0 OR E.NMCUPFIS 0 THEN 'CFD' WHEN LENGTH(D.CACGC) = 11 THEN CASE WHEN E.NMNFS 0 OR E.NMCUPFIS 0 AND C.CAJURFIS = 'J' THEN 'PJ' END END END ELSE 'XXX' END--, 'CFI','MAKRO', 'EMP', 'EMPRESA', 'CFD', 'MAKRO', 'PJ', 'CLIENTE', 'XXX', 'MAKRO') || ' ' || TO_CHAR(B.DTEMINFS,'DD/MM/')|| ' ' || DECODE( CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' WHEN LENGTH(D.CACGC) = 14 THEN CASE WHEN E.NMNFS 0 AND E.NMCUPFIS = 0 THEN 'EMP' WHEN E.NMNFS = 0 AND E.NMCUPFIS 0 THEN 'CFI' WHEN LENGTH(D.CACGC) = 11 THEN CASE WHEN E.NMNFS 0 OR E.NMCUPFIS 0 THEN 'CFD' END END ELSE 'XXX' END , 'CFI','INDETERMINADO', 'EMP', 'EMPRESA', 'CFD', 'DETERMINADO', 'XXX', ' ') || ' ' || TO_CHAR(A.CUSTCLI ,'009') || ' ' || B.NMNFS || '-' || B.CNSERNFS || ' ' || A.NMCUPFIS ANAREDAD FROM CUST_DEV_CHANGE A, CECABNFS B, ACCLIPRI C, ACCLISEC D, HIST_INVOICE E WHERE A.NMSEQREG = B.NMSEQREG AND A.CUSTCLI = C.CUST_NO AND C.CUST_NO = D.CUST_NO AND D.CUST_NO = E.CUST_NO) ORDER BY SUBSTR(ANAREDAD,23,2); -- --PROCEDURE PROC_RM805L21 IS BEGIN SELECT TO_NUMBER(TO_CHAR(TRUNC(NVL(B.DTDIA,SYSDATE),'MM')-3,'MM')), A.STORE_NO, NVL(B.DTDIA,SYSDATE) INTO VL_MESANT, VL_CNLOJ, W_DTDIA FROM STORE A, GENVAR B; VL_SEQREG := 0; FOR REG IN C_RM805L21 LOOP IF VL_SEQREG = 0 THEN INSERT INTO RLINFCTL (ANREL, CNLOJ, DTGERREL, SQDETREL, ANAREDAD) VALUES ( 'RM805L21',0,TRUNC(W_DTDIA),0, 'LOJA OPERACAO REALIZACAO RESPONSAVEL STATUS FORMULARIO VALOR NOTA_FISCAL EMISSOR COMPRA CONSUMIDOR PASSAPORTE NOTA_FISCAL CUPOM_FISCAL' ); END IF; VL_SEQREG := VL_SEQREG + 1; INSERT INTO RLINFCTL( ANREL , CNLOJ , DTGERREL , SQDETREL , ANAREDAD) VALUES ( 'RM805L21' , VL_CNLOJ , TRUNC(W_DTDIA) , VL_SEQREG , REG.ANAREDAD ); END LOOP; COMMIT; END; [As partes desta mensagem que não continham texto foram removidas] -- Att, [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br
Re: [oracle_br] Re: Erro ao compilar procedure no Oracle
Chiappa, Muito obrigado pela ajuda . . .. o problema era a versão do banco, eu estava executando num banco 8, fiz um teste num banco 10G que temos aqui e funcionou perfeitamente. Obrigado pela atenção! Leonardo Silva. Em 18 de abril de 2012 13:29, José Laurindo jlchia...@yahoo.com.brescreveu: ** Colega, pra variar vc não dá a versão Exata de database com que vc está trabalhando (lembro que l atrás, na pré-história do 8i, quando foi inventado o CASE o analisador de PL/SQL tinha algumas dificuldades com ele), mas sendo uma versão recente (ao menos 10g) , afaik Realmente não tem nennhum limite intríseco, o que deve estar pegando aí é mesmo, sim, questão de parêntesis/ponto-e-vírgula/ENDs que o PL/SQL exige Isso sem falar da possibilidade de diferenças de sintaxes , uma query PODE ser executada diretamente na linguagem SQL mas ** não ** no PL/SQL, no PL/SQL vc NECESSARIAMENTE TEM QUE declarar um cursor e respeitar uma sintaxe própria... Manda pra gente um exemplo mínimo de procedure junto com um CREATE TABLE e uns INSERTs pra popular dados, que a gente pode tentar palpitar em cima... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Leonardo Silva leonardo.drums@... escreveu Pessoal, Muito obrigado pelo retorno. Segui todas as dicas e nada resolveu, comentei a parte em que se econtram os cases, e o programa compilou ... Tirei a query inteira da procedure e executei por fora, e a query funciona normalmente com os cases. Analisei a identação como sugerido e não consegui encontrar, existe alguma restrição quanto ao uso do case dentro da proc? Desde já agradeço pela ajuda! Obrigado. 2012/4/18 Milton Bastos Henriquis Jr. miltonbastos@... Não tenho certeza, mas achei bem confuso vc usar um CASE dentro de outro CASE, que está dentro de um DECODE. ... DECODE( CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' WHEN LENGTH(D.CACGC) = 14 THEN CASE WHEN E.NMNFS 0 AND E.NMCUPFIS = 0 THEN 'EMP' WHEN E.NMNFS = 0 AND E.NMCUPFIS 0 THEN 'CFI' WHEN LENGTH(D.CACGC) = 11 THEN CASE .. Acho que alguma dessas lógicas talvez não seja permitida, é melhor vc melhorar esse algoritmo! On Wed, Apr 18, 2012 at 11:17 AM, Leonardo Silva leonardo.drums@...wrote: ** Pessoal, Bom dia, Estou tentando compilar a procedure abaixo, porém está dando erro na linha do caso, o select executa normalmente, porém ao tentar criar uma procedure utilizando o mesmo eu tenho o seguinte erro: Compilation errors for PROCEDURE OPS$STOREP.TESTE_LEO Error: PLS-00103: Encontrado o simbolo CASE quando um dos seguintes simbolos era esperado: ( - + mod null an identifier a double-quoted delimited-identifier a bind variable avg count current max min prior sql stddev sum variance execute forall time timestamp interval date a string literal with character set specification a number a single-quoted SQL string Line: 22 Text: CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' Abaixo o código: Grato pela ajuda. create or replace procedure teste_leo is BEGIN DECLARE VL_SEQREG NUMBER; W_DTDIA DATE; VL_MESANT NUMBER; VL_CNLOJ NUMBER; CURSOR C_RM805L21 IS SELECT ANAREDAD FROM ( SELECT DISTINCT TO_CHAR(A.LOJCLI,'009') ||' '|| RPAD(DECODE (A.TPDEV, 1,'AUTORIZACAO DE CREDITO', 2 , 'TROCA SIMPLES'),22) || ' ' || TO_CHAR(A.DTEMIS,'DD/MM/') || ' ' || RPAD(A.USERINC, 15) || ' ' || RPAD(UPPER(A.STATUS), 15) || '' || RPAD(A.NROSEQ,6)|| '' || TO_CHAR(A.VALOR,'99D99')|| ' ' || A.NFISCAL || '-' || A.NFSER ||' '|| --DECODE( CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' WHEN LENGTH(D.CACGC) = 14 THEN CASE WHEN E.NMNFS 0 AND E.NMCUPFIS = 0 THEN 'EMP' WHEN E.NMNFS = 0 AND E.NMCUPFIS 0 THEN 'CFI' WHEN LENGTH(D.CACGC) = 11 THEN CASE WHEN E.NMNFS 0 OR E.NMCUPFIS 0 THEN 'CFD' WHEN LENGTH(D.CACGC) = 11 THEN CASE WHEN E.NMNFS 0 OR E.NMCUPFIS 0 AND C.CAJURFIS = 'J' THEN 'PJ' END END END ELSE 'XXX' END--, 'CFI','MAKRO', 'EMP', 'EMPRESA', 'CFD', 'MAKRO', 'PJ', 'CLIENTE', 'XXX', 'MAKRO') || ' ' || TO_CHAR(B.DTEMINFS,'DD/MM/')|| ' ' || DECODE( CASE WHEN C.CUST_TYPE_NO = 73 THEN 'CFI' WHEN LENGTH(D.CACGC) = 14 THEN CASE WHEN E.NMNFS 0 AND E.NMCUPFIS = 0 THEN 'EMP' WHEN E.NMNFS = 0 AND E.NMCUPFIS 0 THEN 'CFI' WHEN LENGTH(D.CACGC) = 11 THEN CASE WHEN E.NMNFS 0 OR E.NMCUPFIS 0 THEN 'CFD' END END ELSE 'XXX' END , 'CFI','INDETERMINADO', 'EMP', 'EMPRESA', 'CFD', 'DETERMINADO', 'XXX', ' ') || ' ' || TO_CHAR(A.CUSTCLI ,'009') || ' ' || B.NMNFS || '-' || B.CNSERNFS || ' ' || A.NMCUPFIS ANAREDAD FROM CUST_DEV_CHANGE A, CECABNFS B, ACCLIPRI C, ACCLISEC D, HIST_INVOICE E