[oracle_br] Pesquisa de vagas no exterior

2015-06-29 Por tôpico Leonardo Silva leonardo.dr...@gmail.com [oracle_br]
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

2015-06-29 Por tôpico Leonardo Silva leonardo.dr...@gmail.com [oracle_br]
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

2013-06-12 Por tôpico Leonardo Silva
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

2012-08-29 Por tôpico Leonardo Silva
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

2012-04-27 Por tôpico Leonardo Silva
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

2012-04-26 Por tôpico Leonardo Silva
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

2012-04-26 Por tôpico Leonardo Silva
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

2012-04-24 Por tôpico Leonardo Silva
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

2012-04-20 Por tôpico Leonardo Silva
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

2012-04-20 Por tôpico Leonardo Silva
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

2012-04-18 Por tôpico Leonardo Silva
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

2012-04-18 Por tôpico Leonardo Silva
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