Re: [oracle_br] Re: D�vida - Select bem idiota !!!!
Chiappa, Primeiramente muito obrigado pelo seu tempo em responder a minha questão. Inicialmente também pensei que seria simples, mas me parece que realmente não conseguirei resolver este caso somente usando um select comum sem utilizar recusros externos! Em relação ao que você considerou na sua solução, assim como você, eu também consegui exibir o parâmetro informado no where como apelido da coluna, porém este fica no formato dia/mes/ano e no meu caso, preciso que somente retorne mes/ano. É esta formatação do parâmetro, no apelido da coluna, que estou apanhando aqui em fazer. Tentei também fazer um select deste select, tentando formatar o valor do parâmetro, mas também sem grandes resultados. Um detalhe que não comentei é que, claro, o exemplo que mandei é apenas para ilustrar o select que tenho, pois ele é enorme! Obrigado pela atenção. Grato --- jlchiappa [EMAIL PROTECTED] wrote: Luís, não acompanhei a thread toda mas pelo que entendi o que vc que é que uma parte do SELECT (o alias da coluna,no caso) seja dinâmico (vindo de um parâmetro, tá, mas DINÂMICO, quando o param mudar o alias muda também) : muito bem, em sendo isso a regra no bd oracle é CLARA, absolutamente SEMPRE, SEMPRE, SEMPRE que vc precisa que um ponto qquer da query seja dinâmico isso IMPLICA em transformar a query num ** comando SQL dinâmico ** , rigorosamente ** NÃO TEM COMO ** vc ter a parte que for do comando SQL variando com SQL fixo, comum e normal Assim, enre outras coisas, vc vai ter MAIS COMPLEXIDADE no comando (já que NECESSARIAMENTE um SQL dinâmico envolve algum código extra), E também vai ter que PAGAR O PREÇO em performance se esse SQL for de uso frequente, pois NENHUM dos muitos métodos de SQL dinâmico é grátis em termos de perofrmance, AO MENOS UM PARSE (normalmente HARD) é garantido Muito bem, se ainda assim é isso mesmo que vc quer, aí é checar no seu ambiente de programação quais recursos de SQL dinâmico que vc tem, e/ou investigar os nativos do banco (tal como REF CURSOR, EXECUTE IMMEDIATE, DBMS_SQL)... Segue um exemplo com o recurso de SQL dinâmico nativo do sqlplus , e (ÓBVIO!!!) comparando colunas DATE com valores DATE (comparar DATEs com strings só pode dar BODE), E não esquecendo do componente TIME da coluna DATE, no meu caso todos são zero-hora então ok : == informo um param pro sqlplus... [EMAIL PROTECTED]:SQLaccept V_STR_DATA PROMPT Data: Data:17/06/1987 == veja que ele lá está... [EMAIL PROTECTED]:SQLdefine V_STR_DATA DEFINE V_STR_DATA = 17/06/1987 (CHAR) == uso o componente dinâmico do plus, com a sintaxe de que é a dele : [EMAIL PROTECTED]:SQLSELECT SUM(SALARY) AS V_STR_DATA FROM EMPLOYEES 2* WHERE HIRE_DATE = TO_DATE('V_STR_DATA', 'DD/MM/'); antigo 1: SELECT SUM(SALARY) AS V_STR_DATA FROM EMPLOYEES novo 1: SELECT SUM(SALARY) AS 17/06/1987 FROM EMPLOYEES antigo 2: WHERE HIRE_DATE = TO_DATE('V_STR_DATA', 'DD/MM/') novo 2: WHERE HIRE_DATE = TO_DATE('17/06/1987', 'DD/MM/') == olha o resultado, alias com o param cfrme vc queria : 17/06/1987 -- 24000 [EMAIL PROTECTED]:SQL []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Luis Eduardo Trovo [EMAIL PROTECTED] escreveu Diego, Até daria certo se o campo data na clausula where estivesse também neste formato mes/ano. E mesmo se eu converter este campo data da tabela, para este fomato mes/ano, não refletiria o resultado da soma desejado, pois estaria somando um mês todo e não apenas um dia. Obrigado. Luís. --- Diego Moura [EMAIL PROTECTED] wrote: Tenta passar o parametro com formato tipo assim to_date(parametro,'MM/') 2008/5/12 Luis Eduardo Trovo [EMAIL PROTECTED]: Gleyson, Pode ser mesmo que eu tenha me expressado mal! O nome da coluna (que é o resultado de uma soma) tem que ser sempre o mês/ano de uma data passada no where. Esta data que é passada no where, sempre varia, pois é um parâmetro. No exemplo que eu dei: SELECT SUM(N.VALOR) VALOR_NF FROM NOTAS N WHERE N.DATA = '01/12/2007'; O resultado seria: VALOR_NF 1200 Porém eu preciso que seja, ao invés de VALOR_NF, seja a data passada no where formatada para mes/ano, ou seja: 12/2007 --- 1200 Tem alguma idéia? Grato. Luís. --- Gleyson Melo [EMAIL PROTECTED] gleysonmelo%40gmail.com wrote: Luís, O seu problema não é exatamente esse. Você quer usar isso para resolver um problema maior. Se você disser qual o problema, pode ser que a gente dê uma solução bem melhor. 2008/5/12 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com: Senhores(as), boa tarde! Considerem o seguinte select: SELECT SUM(N.VALOR)
[oracle_br] Re: ORA-03106 em dblink entre Solaris e Windows (SOLUCIONADO)
Bom dia! Depois de muitas tentativas, testes e pesquisas, descobri que o problema trata-se de bug que tem como solução o Patch 5671074. Depois de aplicá-lo os objetos foram validados normalmente. Agradeço a todos pelas colaborações. Muito obrigada, Elaine --- Em oracle_br@yahoogrupos.com.br, jlchiappa [EMAIL PROTECTED] escreveu Colega, eu penso que o problema NÂO É o fato do banco remoto estar no Windows e o dblink estar no Solaris, pra mim o que houve é que alguém mexeu em config (por exemplo, global_names), e/ou permissões lá no banco remoto para o schema com o qual vc conecta no dblink : inclusive, um ponto-chave na minha análise é a msg : ORA-04052: error occurred when looking up remote object ou seja, o banco NÃO consegue localizar o objeto que a procedure referencia lá no banco remoto : o fato de vc poder fazer SELECT com o objeto remoto MAS não poder usar ele numa procedure indica que talvez antes havia um GRANT direto desse objeto para o usuário do dblink, e hoje não há mais, algo do tipo... Sugestão : crie um NOVO dblink no banco-origem (solaris), conectando com um OUTRO usuário nesse outro banco Windows de teste , se assegure que o usuáriodo dblink recebeu GRANT direto no objeto que vc quer acessar e crie no Solaris uma procedure simples fazendo aceso ao objeto, veja lá... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, eladba eladba@ escreveu Caro amigo, infelizmente não é esta a solução. Já tentamos fazer isso mas o erro é o mesmo, ou seja, tanto em sessões do sqlplus no servidor solaris do banco de dados, ou no cliente, ou até mesmo no servidor windows, a situação é a mesma. Abaixo mostramos a mesma sessão sqlplus no servidor solaris fazendo select na tabela que está dentro da procedure e o dblink, e logo em seguida tentando compilar a procedure: SQL select count(*) from [EMAIL PROTECTED]; COUNT(*) -- 1781 SQL alter PROCEDURE schema.nome_procedure compile; Warning: Procedure altered with compilation errors. SQL sho errors 81/1 PL/SQL: SQL Statement ignored 96/1 PL/SQL: ORA-04052: error occurred when looking up remote object [EMAIL PROTECTED] ORA-00604: error occurred at recursive SQL level 1 ORA-03106: fatal two-task communication protocol error ORA-02063: preceding line from NOME_DBLINK Muito obrigada, Elaine --- Em oracle_br@yahoogrupos.com.br, Arystydes arystydes@ escreveu Valide a procedure no próprio banco, e não remotamente. - Original Message - From: eladba To: oracle_br@yahoogrupos.com.br ; [EMAIL PROTECTED] ; [EMAIL PROTECTED] Cc: DTQ03 - Mônica Sent: Thursday, May 08, 2008 5:14 PM Subject: [oracle_br] ORA-03106 em dblink entre Solaris e Windows Boa tarde, pessoal. Temos dois bancos na versão 9.2.0.8, sendo que o banco de produção está no servidor com Windows 2003 Server, e o banco de dados de armazenamento da auditoria do produção está no Solaris 8. O dblink está no banco de dados do Solaris e tem um JOB no banco de dados para ler os dados de algumas tabelas do banco de dados do Windows, e atualizar as tabelas de auditoria e apagar as tabelas no produção. Para esta tarefa existe uma PROCEDURE. PROBLEMA: Está tarefa estava funcionando bem, até que de uns dias para cá o JOB começou a apresentar erro, percebemos então que a PROCEDURE que faz a atualização estava invalida e ao validá-la aparece a seguinte mensagem: PL/SQL: SQL Statement ignored PL/SQL: ORA-04052: error occurred when looking up remote object [EMAIL PROTECTED] ORA-00604: error occurred at recursive SQL level 1 ORA-03106: fatal two-task communication protocol error ORA-02063: preceding line from DBLINK Mas quando é acessado o DBLINK para teste via SQLPLUS fazendo, por exemplo, SELECT COUNT(*) FROM [EMAIL PROTECTED] há o retorno da consulta, portanto a conexão está funcionando. O erro aparece na validação da PROCEDURE. Alguém já passou por isso e pode nos dar alguma dica? Detalhe, passamos a rotina exatamente como é para outro banco de dados no Windows e voltou a funcionar. Ou seja, Windows X Windows funciona, assim podemos dizer que o problema está entre Solaris X Windows mesmo. Obrigada a todos, Elaine [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Re: Dúvida - Select bem idiota !! !!
Luis, Fica difícil entender qual a finalidade exata deste seu Select. Você está usando numa aplicação Delphi/Java/.Net ou então direto no SQL Plus? Pois até agora vi todo mundo quebrar a cabeça tentando achar uma solução porém a solução pode ser bem simples se soubéssemos onde vai ser aplicado este select. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Luis Eduardo Trovo Enviada em: terça-feira, 13 de maio de 2008 08:30 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Dúvida - Select bem idiota Chiappa, Primeiramente muito obrigado pelo seu tempo em responder a minha questão. Inicialmente também pensei que seria simples, mas me parece que realmente não conseguirei resolver este caso somente usando um select comum sem utilizar recusros externos! Em relação ao que você considerou na sua solução, assim como você, eu também consegui exibir o parâmetro informado no where como apelido da coluna, porém este fica no formato dia/mes/ano e no meu caso, preciso que somente retorne mes/ano. É esta formatação do parâmetro, no apelido da coluna, que estou apanhando aqui em fazer. Tentei também fazer um select deste select, tentando formatar o valor do parâmetro, mas também sem grandes resultados. Um detalhe que não comentei é que, claro, o exemplo que mandei é apenas para ilustrar o select que tenho, pois ele é enorme! Obrigado pela atenção. Grato --- jlchiappa [EMAIL PROTECTED] mailto:jlchiappa%40yahoo.com.br com.br wrote: Luís, não acompanhei a thread toda mas pelo que entendi o que vc que é que uma parte do SELECT (o alias da coluna,no caso) seja dinâmico (vindo de um parâmetro, tá, mas DINÂMICO, quando o param mudar o alias muda também) : muito bem, em sendo isso a regra no bd oracle é CLARA, absolutamente SEMPRE, SEMPRE, SEMPRE que vc precisa que um ponto qquer da query seja dinâmico isso IMPLICA em transformar a query num ** comando SQL dinâmico ** , rigorosamente ** NÃO TEM COMO ** vc ter a parte que for do comando SQL variando com SQL fixo, comum e normal Assim, enre outras coisas, vc vai ter MAIS COMPLEXIDADE no comando (já que NECESSARIAMENTE um SQL dinâmico envolve algum código extra), E também vai ter que PAGAR O PREÇO em performance se esse SQL for de uso frequente, pois NENHUM dos muitos métodos de SQL dinâmico é grátis em termos de perofrmance, AO MENOS UM PARSE (normalmente HARD) é garantido Muito bem, se ainda assim é isso mesmo que vc quer, aí é checar no seu ambiente de programação quais recursos de SQL dinâmico que vc tem, e/ou investigar os nativos do banco (tal como REF CURSOR, EXECUTE IMMEDIATE, DBMS_SQL)... Segue um exemplo com o recurso de SQL dinâmico nativo do sqlplus , e (ÓBVIO!!!) comparando colunas DATE com valores DATE (comparar DATEs com strings só pode dar BODE), E não esquecendo do componente TIME da coluna DATE, no meu caso todos são zero-hora então ok : == informo um param pro sqlplus... [EMAIL PROTECTED]:SQLaccept V_STR_DATA PROMPT Data: Data:17/06/1987 == veja que ele lá está... [EMAIL PROTECTED]:SQLdefine V_STR_DATA DEFINE V_STR_DATA = 17/06/1987 (CHAR) == uso o componente dinâmico do plus, com a sintaxe de que é a dele : [EMAIL PROTECTED]:SQLSELECT SUM(SALARY) AS V_STR_DATA FROM EMPLOYEES 2* WHERE HIRE_DATE = TO_DATE('V_STR_DATA', 'DD/MM/'); antigo 1: SELECT SUM(SALARY) AS V_STR_DATA FROM EMPLOYEES novo 1: SELECT SUM(SALARY) AS 17/06/1987 FROM EMPLOYEES antigo 2: WHERE HIRE_DATE = TO_DATE('V_STR_DATA', 'DD/MM/') novo 2: WHERE HIRE_DATE = TO_DATE('17/06/1987', 'DD/MM/') == olha o resultado, alias com o param cfrme vc queria : 17/06/1987 -- 24000 [EMAIL PROTECTED]:SQL []s Chiappa --- Em [EMAIL PROTECTED] mailto:oracle_br%40yahoogrupos.com.br os.com.br, Luis Eduardo Trovo [EMAIL PROTECTED] escreveu Diego, Até daria certo se o campo data na clausula where estivesse também neste formato mes/ano. E mesmo se eu converter este campo data da tabela, para este fomato mes/ano, não refletiria o resultado da soma desejado, pois estaria somando um mês todo e não apenas um dia. Obrigado. Luís. --- Diego Moura [EMAIL PROTECTED] wrote: Tenta passar o parametro com formato tipo assim to_date(parametro,'MM/') 2008/5/12 Luis Eduardo Trovo [EMAIL PROTECTED]: Gleyson, Pode ser mesmo que eu tenha me expressado mal! O nome da coluna (que é o resultado de uma soma) tem que ser sempre o mês/ano de uma data passada no where. Esta data que é passada no where, sempre varia, pois é um parâmetro. No exemplo que eu dei:
[oracle_br] Re: [oracle br] Re: Dúvida - Select bem idiota !!!!
kra.. isso não resolveria esse problema d trazer o mes/ano: SQLWKS select to_char(sysdate, 'mm/') 2 from dual; TO_CHAR --- 05/2008 1 linha selecionada. -- att, Jean Carlo Stein da Fonseca Programador PL/SQL Forms/Reports 6i. DBA Oracle Jr. em busca do OCA. (48) 9604-6138 - Mensagem Original De: Luis Eduardo Trovo [EMAIL PROTECTED] Para: oracle_br@yahoogrupos.com.br oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Dúvida - Select bem idiota Data: 13/05/08 08:29 Chiappa, Primeiramente muito obrigado pelo seu tempo em responder a minha questão. Inicialmente também pensei que seria simples, mas me parece que realmente não conseguirei resolver este caso somente usando um select comum sem utilizar recusros externos! Em relaão ao que você considerou na sua soluão, assim como você, eu também consegui exibir o parâmetro informado no where como apelido da coluna, porém este fica no formato quot;dia/mes/anoquot; e no meu caso, preciso que somente retorne quot;mes/anoquot;. É esta formataão do parâmetro, no apelido da coluna, que estou apanhando aqui em fazer. Tentei também fazer um select deste select, tentando formatar o valor do parâmetro, mas também sem grandes resultados. Um detalhe que não comentei é que, claro, o exemplo que mandei é apenas para ilustrar o select que tenho, pois ele é enorme! Obrigado pela atenão. Grato --- jlchiappa lt;[EMAIL PROTECTED]gt; wrote: gt; Luís, não acompanhei a thread toda mas pelo que gt; entendi o que vc que é gt; que uma parte do SELECT (o alias da coluna,no caso) gt; seja dinâmico gt; (vindo de um parâmetro, tá, mas DINÂMICO, quando o gt; param mudar o alias gt; muda também) : muito bem, em sendo isso a regra no gt; bd oracle é CLARA, gt; absolutamente SEMPRE, SEMPRE, SEMPRE que vc precisa gt; que um ponto qquer gt; da query seja dinâmico isso IMPLICA em transformar a gt; query num ** gt; comando SQL dinâmico ** , rigorosamente ** NÃO TEM gt; COMO ** vc ter a gt; parte que for do comando SQL variando com SQL fixo, gt; quot;comumquot; e gt; quot;normalquot; Assim, enre outras coisas, vc vai ter gt; MAIS COMPLEXIDADE gt; no comando (já que NECESSARIAMENTE um SQL dinâmico gt; envolve algum gt; código extra), E também vai ter que PAGAR O PREÇO em gt; performance se gt; esse SQL for de uso frequente, pois NENHUM dos gt; muitos métodos de SQL gt; dinâmico é quot;grátisquot; em termos de perofrmance, AO gt; MENOS UM PARSE gt; (normalmente HARD) é garantido gt; Muito bem, se ainda assim é isso mesmo que vc quer, gt; aí é checar no gt; seu ambiente de programaão quais recursos de SQL gt; dinâmico que vc tem, gt; e/ou investigar os nativos do banco (tal como REF gt; CURSOR, EXECUTE gt; IMMEDIATE, DBMS_SQL)... gt; Segue um exemplo com o recurso de SQL dinâmico gt; nativo do sqlplus , e gt; (ÓBVIO!!!) comparando colunas DATE com valores DATE gt; (comparar DATEs gt; com strings só pode dar BODE), E não esquecendo do gt; componente TIME da gt; coluna DATE, no meu caso todos são zero-hora então gt; ok : gt; gt; =gt; informo um param pro sqlplus... gt; gt; [EMAIL PROTECTED]:SQLgt;accept V_STR_DATA PROMPT quot;Data:quot; gt; Data:17/06/1987 gt; gt; =gt; veja que ele lá está... gt; gt; [EMAIL PROTECTED]:SQLgt;define V_STR_DATA gt; gt; DEFINE V_STR_DATA = quot;17/06/1987quot; (CHAR) gt; gt; =gt; uso o componente dinâmico do plus, com a sintaxe gt; de amp; que é a dele : gt; gt; [EMAIL PROTECTED]:SQLgt;SELECT SUM(SALARY) AS quot;amp;V_STR_DATAquot; FROM gt; EMPLOYEES gt; 2* WHERE HIRE_DATE = TO_DATE('amp;V_STR_DATA', gt; 'DD/MM/'); gt; gt; gt; antigo 1: SELECT SUM(SALARY) AS quot;amp;V_STR_DATAquot; FROM gt; EMPLOYEES gt; novo 1: SELECT SUM(SALARY) AS quot;17/06/1987quot; FROM gt; EMPLOYEES gt; antigo 2: WHERE HIRE_DATE = TO_DATE('amp;V_STR_DATA', gt; 'DD/MM/') gt; novo 2: WHERE HIRE_DATE = TO_DATE('17/06/1987', gt; 'DD/MM/') gt; gt; =gt; olha o resultado, alias com o param cfrme vc gt; queria : gt; gt; 17/06/1987 gt; -- gt; 24000 gt; gt; [EMAIL PROTECTED]:SQLgt; gt; gt; []s gt; gt; Chiappa gt; --- Em oracle_br@yahoogrupos.com.br, Luis Eduardo gt; Trovo lt;[EMAIL PROTECTED]gt; gt; escreveu gt; gt; gt; gt; Diego, gt; gt; gt; gt; gt; gt; Até daria certo se o campo data na clausula where gt; gt; estivesse também neste formato quot;mes/anoquot;. gt; gt; E mesmo se eu converter este campo data da tabela, gt; gt; para este fomato quot;mes/anoquot;, não refletiria o gt; resultado gt; gt; da soma desejado, pois estaria somando um mês todo gt; e gt; gt; não apenas um dia. gt; gt; gt; gt; Obrigado. gt; gt; Luís. gt; gt; gt; gt; gt; gt; --- Diego Moura lt;[EMAIL PROTECTED]gt; wrote: gt; gt; gt; gt; gt; Tenta passar o parametro com formato tipo assim gt; gt; gt; to_date(parametro,'MM/') gt; gt; gt; gt; gt; gt;
Re: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
Bom dia Marcelo, Obrigado pela resposta! Sua pergunta é muito pertinente e é importante para contextualizar o problema. Este select em questão, que é apenas um exemplo para não deixar o e-mail tão poluído, se tornará uma View. Todas as vezes que eu tiver que acionar esta View, passarei uma data como parâmetro (na clausula where). E é com base neste valor da data que eu quero compor o nome de uma coluna (dinamicamente), formatando esta como mês/ano. Grato. Luís. --- Marcelo [EMAIL PROTECTED] wrote: Luis, Fica difícil entender qual a finalidade exata deste seu Select. Você está usando numa aplicação Delphi/Java/.Net ou então direto no SQL Plus? Pois até agora vi todo mundo quebrar a cabeça tentando achar uma solução porém a solução pode ser bem simples se soubéssemos onde vai ser aplicado este select. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Luis Eduardo Trovo Enviada em: terça-feira, 13 de maio de 2008 08:30 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Dúvida - Select bem idiota Chiappa, Primeiramente muito obrigado pelo seu tempo em responder a minha questão. Inicialmente também pensei que seria simples, mas me parece que realmente não conseguirei resolver este caso somente usando um select comum sem utilizar recusros externos! Em relação ao que você considerou na sua solução, assim como você, eu também consegui exibir o parâmetro informado no where como apelido da coluna, porém este fica no formato dia/mes/ano e no meu caso, preciso que somente retorne mes/ano. É esta formatação do parâmetro, no apelido da coluna, que estou apanhando aqui em fazer. Tentei também fazer um select deste select, tentando formatar o valor do parâmetro, mas também sem grandes resultados. Um detalhe que não comentei é que, claro, o exemplo que mandei é apenas para ilustrar o select que tenho, pois ele é enorme! Obrigado pela atenção. Grato --- jlchiappa [EMAIL PROTECTED] mailto:jlchiappa%40yahoo.com.br com.br wrote: Luís, não acompanhei a thread toda mas pelo que entendi o que vc que é que uma parte do SELECT (o alias da coluna,no caso) seja dinâmico (vindo de um parâmetro, tá, mas DINÂMICO, quando o param mudar o alias muda também) : muito bem, em sendo isso a regra no bd oracle é CLARA, absolutamente SEMPRE, SEMPRE, SEMPRE que vc precisa que um ponto qquer da query seja dinâmico isso IMPLICA em transformar a query num ** comando SQL dinâmico ** , rigorosamente ** NÃO TEM COMO ** vc ter a parte que for do comando SQL variando com SQL fixo, comum e normal Assim, enre outras coisas, vc vai ter MAIS COMPLEXIDADE no comando (já que NECESSARIAMENTE um SQL dinâmico envolve algum código extra), E também vai ter que PAGAR O PREÇO em performance se esse SQL for de uso frequente, pois NENHUM dos muitos métodos de SQL dinâmico é grátis em termos de perofrmance, AO MENOS UM PARSE (normalmente HARD) é garantido Muito bem, se ainda assim é isso mesmo que vc quer, aí é checar no seu ambiente de programação quais recursos de SQL dinâmico que vc tem, e/ou investigar os nativos do banco (tal como REF CURSOR, EXECUTE IMMEDIATE, DBMS_SQL)... Segue um exemplo com o recurso de SQL dinâmico nativo do sqlplus , e (ÓBVIO!!!) comparando colunas DATE com valores DATE (comparar DATEs com strings só pode dar BODE), E não esquecendo do componente TIME da coluna DATE, no meu caso todos são zero-hora então ok : == informo um param pro sqlplus... [EMAIL PROTECTED]:SQLaccept V_STR_DATA PROMPT Data: Data:17/06/1987 == veja que ele lá está... [EMAIL PROTECTED]:SQLdefine V_STR_DATA DEFINE V_STR_DATA = 17/06/1987 (CHAR) == uso o componente dinâmico do plus, com a sintaxe de que é a dele : [EMAIL PROTECTED]:SQLSELECT SUM(SALARY) AS V_STR_DATA FROM EMPLOYEES 2* WHERE HIRE_DATE = TO_DATE('V_STR_DATA', 'DD/MM/'); antigo 1: SELECT SUM(SALARY) AS V_STR_DATA FROM EMPLOYEES novo 1: SELECT SUM(SALARY) AS 17/06/1987 FROM EMPLOYEES antigo 2: WHERE HIRE_DATE = TO_DATE('V_STR_DATA', 'DD/MM/') novo 2: WHERE HIRE_DATE = TO_DATE('17/06/1987', 'DD/MM/') == olha o resultado, alias com o param cfrme vc queria : 17/06/1987 -- 24000 [EMAIL PROTECTED]:SQL []s Chiappa --- Em [EMAIL PROTECTED] mailto:oracle_br%40yahoogrupos.com.br os.com.br, Luis Eduardo Trovo [EMAIL PROTECTED] escreveu Diego, Até daria certo se o campo data na clausula where estivesse também neste formato mes/ano. E mesmo se eu converter
Re: RES: [oracle_br] Re: Dúvida - Select bem idiota !!!!
Rapaiz é muita perfumariaehhehe Cara bom acredito que foram dadas todas possiveis soluções a você a unica maneira que na minha opnião, o que lhe resta é passar 3 parametros dia, mes e ano separados select sysdate mes/ano from dual where sysdate = to_date(dia||'/'||mes||'/'||ano, 'dd/mm/') and sysdate = last_day(to_date(dia||'/'||mes||'/'||ano, 'dd/mm/')) Acredito que só assim voce ira conseguir esta proeza e se tiver outra forma ficarei grato em saber 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED]: Bom dia Marcelo, Obrigado pela resposta! Sua pergunta é muito pertinente e é importante para contextualizar o problema. Este select em questão, que é apenas um exemplo para não deixar o e-mail tão poluído, se tornará uma View. Todas as vezes que eu tiver que acionar esta View, passarei uma data como parâmetro (na clausula where). E é com base neste valor da data que eu quero compor o nome de uma coluna (dinamicamente), formatando esta como mês/ano. Grato. Luís. --- Marcelo [EMAIL PROTECTED] marcelo%40autopratense.com.br wrote: Luis, Fica difícil entender qual a finalidade exata deste seu Select. Você está usando numa aplicação Delphi/Java/.Net ou então direto no SQL Plus? Pois até agora vi todo mundo quebrar a cabeça tentando achar uma solução porém a solução pode ser bem simples se soubéssemos onde vai ser aplicado este select. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED]marcelo%40autopratense.com.br [EMAIL PROTECTED] marcelo%40autopratense.com.br * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Luis Eduardo Trovo Enviada em: terça-feira, 13 de maio de 2008 08:30 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Dúvida - Select bem idiota Chiappa, Primeiramente muito obrigado pelo seu tempo em responder a minha questão. Inicialmente também pensei que seria simples, mas me parece que realmente não conseguirei resolver este caso somente usando um select comum sem utilizar recusros externos! Em relação ao que você considerou na sua solução, assim como você, eu também consegui exibir o parâmetro informado no where como apelido da coluna, porém este fica no formato dia/mes/ano e no meu caso, preciso que somente retorne mes/ano. É esta formatação do parâmetro, no apelido da coluna, que estou apanhando aqui em fazer. Tentei também fazer um select deste select, tentando formatar o valor do parâmetro, mas também sem grandes resultados. Um detalhe que não comentei é que, claro, o exemplo que mandei é apenas para ilustrar o select que tenho, pois ele é enorme! Obrigado pela atenção. Grato --- jlchiappa [EMAIL PROTECTED] mailto:jlchiappa%40yahoo.com.br jlchiappa%2540yahoo.com.br com.br wrote: Luís, não acompanhei a thread toda mas pelo que entendi o que vc que é que uma parte do SELECT (o alias da coluna,no caso) seja dinâmico (vindo de um parâmetro, tá, mas DINÂMICO, quando o param mudar o alias muda também) : muito bem, em sendo isso a regra no bd oracle é CLARA, absolutamente SEMPRE, SEMPRE, SEMPRE que vc precisa que um ponto qquer da query seja dinâmico isso IMPLICA em transformar a query num ** comando SQL dinâmico ** , rigorosamente ** NÃO TEM COMO ** vc ter a parte que for do comando SQL variando com SQL fixo, comum e normal Assim, enre outras coisas, vc vai ter MAIS COMPLEXIDADE no comando (já que NECESSARIAMENTE um SQL dinâmico envolve algum código extra), E também vai ter que PAGAR O PREÇO em performance se esse SQL for de uso frequente, pois NENHUM dos muitos métodos de SQL dinâmico é grátis em termos de perofrmance, AO MENOS UM PARSE (normalmente HARD) é garantido Muito bem, se ainda assim é isso mesmo que vc quer, aí é checar no seu ambiente de programação quais recursos de SQL dinâmico que vc tem, e/ou investigar os nativos do banco (tal como REF CURSOR, EXECUTE IMMEDIATE, DBMS_SQL)... Segue um exemplo com o recurso de SQL dinâmico nativo do sqlplus , e (ÓBVIO!!!) comparando colunas DATE com valores DATE (comparar DATEs com strings só pode dar BODE), E não esquecendo do componente TIME da coluna DATE, no meu caso todos são zero-hora então ok : == informo um param pro sqlplus... [EMAIL PROTECTED]:SQLaccept V_STR_DATA PROMPT Data: Data:17/06/1987 == veja que ele lá está... [EMAIL PROTECTED]:SQLdefine V_STR_DATA DEFINE V_STR_DATA = 17/06/1987 (CHAR) == uso o componente dinâmico do
[oracle_br] Re: Dúvida - Select bem idiota !!!!
Luís, Ainda assim está difícil de visualizar o seu problema inicial... Diga o porque você precisa disso. Que ferramenta você está usando. Por exemplo, se você estiver usando delphi é bem fácil resolver isso com uma macro. Luis Eduardo Trovo escreveu: Bom dia Marcelo, Obrigado pela resposta! Sua pergunta é muito pertinente e é importante para contextualizar o problema. Este select em questão, que é apenas um exemplo para não deixar o e-mail tão poluído, se tornará uma View. Todas as vezes que eu tiver que acionar esta View, passarei uma data como parâmetro (na clausula where). E é com base neste valor da data que eu quero compor o nome de uma coluna (dinamicamente), formatando esta como mês/ano. Grato. Luís. --- Marcelo [EMAIL PROTECTED] mailto:marcelo%40autopratense.com.br wrote: Luis, Fica difícil entender qual a finalidade exata deste seu Select. Você está usando numa aplicação Delphi/Java/.Net ou então direto no SQL Plus? Pois até agora vi todo mundo quebrar a cabeça tentando achar uma solução porém a solução pode ser bem simples se soubéssemos onde vai ser aplicado este select. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED] mailto:marcelo%40autopratense.com.br [EMAIL PROTECTED] mailto:marcelo%40autopratense.com.br * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br] Em nome de Luis Eduardo Trovo Enviada em: terça-feira, 13 de maio de 2008 08:30 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Dúvida - Select bem idiota Chiappa, Primeiramente muito obrigado pelo seu tempo em responder a minha questão. Inicialmente também pensei que seria simples, mas me parece que realmente não conseguirei resolver este caso somente usando um select comum sem utilizar recusros externos! Em relação ao que você considerou na sua solução, assim como você, eu também consegui exibir o parâmetro informado no where como apelido da coluna, porém este fica no formato dia/mes/ano e no meu caso, preciso que somente retorne mes/ano. É esta formatação do parâmetro, no apelido da coluna, que estou apanhando aqui em fazer. Tentei também fazer um select deste select, tentando formatar o valor do parâmetro, mas também sem grandes resultados. Um detalhe que não comentei é que, claro, o exemplo que mandei é apenas para ilustrar o select que tenho, pois ele é enorme! Obrigado pela atenção. Grato --- jlchiappa [EMAIL PROTECTED] mailto:jlchiappa%40yahoo.com.br com.br wrote: Luís, não acompanhei a thread toda mas pelo que entendi o que vc que é que uma parte do SELECT (o alias da coluna,no caso) seja dinâmico (vindo de um parâmetro, tá, mas DINÂMICO, quando o param mudar o alias muda também) : muito bem, em sendo isso a regra no bd oracle é CLARA, absolutamente SEMPRE, SEMPRE, SEMPRE que vc precisa que um ponto qquer da query seja dinâmico isso IMPLICA em transformar a query num ** comando SQL dinâmico ** , rigorosamente ** NÃO TEM COMO ** vc ter a parte que for do comando SQL variando com SQL fixo, comum e normal Assim, enre outras coisas, vc vai ter MAIS COMPLEXIDADE no comando (já que NECESSARIAMENTE um SQL dinâmico envolve algum código extra), E também vai ter que PAGAR O PREÇO em performance se esse SQL for de uso frequente, pois NENHUM dos muitos métodos de SQL dinâmico é grátis em termos de perofrmance, AO MENOS UM PARSE (normalmente HARD) é garantido Muito bem, se ainda assim é isso mesmo que vc quer, aí é checar no seu ambiente de programação quais recursos de SQL dinâmico que vc tem, e/ou investigar os nativos do banco (tal como REF CURSOR, EXECUTE IMMEDIATE, DBMS_SQL)... Segue um exemplo com o recurso de SQL dinâmico nativo do sqlplus , e (ÓBVIO!!!) comparando colunas DATE com valores DATE (comparar DATEs com strings só pode dar BODE), E não esquecendo do componente TIME da coluna DATE, no meu caso todos são zero-hora então ok : == informo um param pro sqlplus... [EMAIL PROTECTED]:SQLaccept V_STR_DATA PROMPT Data: Data:17/06/1987 == veja que ele lá está... [EMAIL PROTECTED]:SQLdefine V_STR_DATA DEFINE V_STR_DATA = 17/06/1987 (CHAR) == uso o componente dinâmico do plus, com a sintaxe de que é a dele : [EMAIL
Re: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
Rs .. cara, é perfumaria demais para minha opinião também, mas, o usuário quer assim! Fazer o que!? Sua resposta é a que melhor resolveu realmente! Ainda assim, não vou conseguir utilizá-la, pois o meu campo de data, na tabela, não está quebrado em dia, mês e ano. Se ainda este select estivesse dentro de uma procedure, function, enfim, em algum aplicativo, eu conseguiria manipulá-lo, mas este select é a composição de uma View. E já se foi um dia batendo a cabeça nesta porcaria de select. Rs. Abraços. Luís. --- Gmail - Guilherme [EMAIL PROTECTED] wrote: Rapaiz é muita perfumariaehhehe Cara bom acredito que foram dadas todas possiveis soluções a você a unica maneira que na minha opnião, o que lhe resta é passar 3 parametros dia, mes e ano separados select sysdate mes/ano from dual where sysdate = to_date(dia||'/'||mes||'/'||ano, 'dd/mm/') and sysdate = last_day(to_date(dia||'/'||mes||'/'||ano, 'dd/mm/')) Acredito que só assim voce ira conseguir esta proeza e se tiver outra forma ficarei grato em saber 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED]: Bom dia Marcelo, Obrigado pela resposta! Sua pergunta é muito pertinente e é importante para contextualizar o problema. Este select em questão, que é apenas um exemplo para não deixar o e-mail tão poluído, se tornará uma View. Todas as vezes que eu tiver que acionar esta View, passarei uma data como parâmetro (na clausula where). E é com base neste valor da data que eu quero compor o nome de uma coluna (dinamicamente), formatando esta como mês/ano. Grato. Luís. --- Marcelo [EMAIL PROTECTED] marcelo%40autopratense.com.br wrote: Luis, Fica difícil entender qual a finalidade exata deste seu Select. Você está usando numa aplicação Delphi/Java/.Net ou então direto no SQL Plus? Pois até agora vi todo mundo quebrar a cabeça tentando achar uma solução porém a solução pode ser bem simples se soubéssemos onde vai ser aplicado este select. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED]marcelo%40autopratense.com.br [EMAIL PROTECTED] marcelo%40autopratense.com.br * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Luis Eduardo Trovo Enviada em: terça-feira, 13 de maio de 2008 08:30 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Dúvida - Select bem idiota Chiappa, Primeiramente muito obrigado pelo seu tempo em responder a minha questão. Inicialmente também pensei que seria simples, mas me parece que realmente não conseguirei resolver este caso somente usando um select comum sem utilizar recusros externos! Em relação ao que você considerou na sua solução, assim como você, eu também consegui exibir o parâmetro informado no where como apelido da coluna, porém este fica no formato dia/mes/ano e no meu caso, preciso que somente retorne mes/ano. É esta formatação do parâmetro, no apelido da coluna, que estou apanhando aqui em fazer. Tentei também fazer um select deste select, tentando formatar o valor do parâmetro, mas também sem grandes resultados. Um detalhe que não comentei é que, claro, o exemplo que mandei é apenas para ilustrar o select que tenho, pois ele é enorme! Obrigado pela atenção. Grato --- jlchiappa [EMAIL PROTECTED] mailto:jlchiappa%40yahoo.com.br jlchiappa%2540yahoo.com.br com.br wrote: Luís, não acompanhei a thread toda mas pelo que entendi o que vc que é que uma parte do SELECT (o alias da coluna,no caso) seja dinâmico (vindo de um parâmetro, tá, mas DINÂMICO, quando o param mudar o alias muda também) : muito bem, em sendo isso a regra no bd oracle é CLARA, absolutamente SEMPRE, SEMPRE, SEMPRE que vc precisa que um ponto qquer da query seja dinâmico isso IMPLICA em transformar a query num ** comando SQL dinâmico ** , rigorosamente ** NÃO TEM COMO ** vc ter a parte que for do comando SQL variando com SQL fixo, comum e normal Assim, enre outras coisas, vc vai ter MAIS COMPLEXIDADE no comando (já que NECESSARIAMENTE um SQL dinâmico envolve algum código extra), E também vai ter que PAGAR O PREÇO em performance se esse SQL for de uso frequente, pois NENHUM dos muitos métodos de SQL dinâmico é grátis em termos de perofrmance, AO MENOS UM PARSE (normalmente HARD) é garantido Muito bem, se ainda assim é isso mesmo que vc quer, aí
[oracle_br] RHEL5 64bit x Oracle10gR1 64bit: é possível?
Senhores, bom dia. Gostaria de saber se alguém aqui do grupo já instalou Oracle10gR1 em RHEL5 64bit. Não encontrei informação de homologação no metalink... Obrigado.
Re: [oracle_br] RHEL5 64bit x Oracle10gR1 64bit: é possível?
O Oracle 10g(R1) não eh homologado para o RHEL5 2008/5/13 jljlsilva [EMAIL PROTECTED]: Senhores, bom dia. Gostaria de saber se alguém aqui do grupo já instalou Oracle10gR1 em RHEL5 64bit. Não encontrei informação de homologação no metalink... Obrigado. -- 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/ -- Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
[oracle_br] Re: RHEL5 64bit x Oracle10gR1 64bit: é possível?
Sim, foi isso que eu entendi também, ao consultar a matriz de certificação no metalink. Mas, preciso saber se alguém tem essa configuração instalada, se já houve algum tipo de problema ou se está estável. --- Em oracle_br@yahoogrupos.com.br, Ivan Ricardo Schuster [EMAIL PROTECTED] escreveu O Oracle 10g(R1) não eh homologado para o RHEL5 2008/5/13 jljlsilva [EMAIL PROTECTED]: Senhores, bom dia. Gostaria de saber se alguém aqui do grupo já instalou Oracle10gR1 em RHEL5 64bit. Não encontrei informação de homologação no metalink... Obrigado. -- 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/ -- Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- -- Links do Yahoo! Grupos
RE: [oracle_br] RHEL5 64bit x Oracle10gR1 64bit: é pos sível?
no RHEL5 nao, mas no suse10 sim.Mas é possível instalar sim. To: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Tue, 13 May 2008 13:22:05 +Subject: [oracle_br] RHEL5 64bit x Oracle10gR1 64bit: é possível? Senhores, bom dia.Gostaria de saber se alguém aqui do grupo já instalou Oracle10gR1 em RHEL5 64bit.Não encontrei informação de homologação no metalink...Obrigado. _ Cansado de espaço para só 50 fotos? Conheça o Spaces, o site de relacionamentos com até 6,000 fotos! http://www.amigosdomessenger.com.br [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] RHEL5 64bit x Oracle10gR1 64bit: é pos sível?
desculpe, o r1 nao, mas o r2 sim. To: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Tue, 13 May 2008 13:43:15 +Subject: RE: [oracle_br] RHEL5 64bit x Oracle10gR1 64bit: é possível? no RHEL5 nao, mas no suse10 sim.Mas é possível instalar sim.To: [EMAIL PROTECTED]: [EMAIL PROTECTED]: Tue, 13 May 2008 13:22:05 +Subject: [oracle_br] RHEL5 64bit x Oracle10gR1 64bit: é possível?Senhores, bom dia.Gostaria de saber se alguém aqui do grupo já instalou Oracle10gR1 em RHEL5 64bit.Não encontrei informação de homologação no metalink...Obrigado. __Cansado de espaço para só 50 fotos? Conheça o Spaces, o site de relacionamentos com até 6,000 fotos!http://www.amigosdomessenger.com.br[As partes desta mensagem que não continham texto foram removidas] _ Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o Messenger! É GRÁTIS! http://www.msn.com.br/emoticonpack [As partes desta mensagem que não continham texto foram removidas]
Re: RES: RES: [oracle_br] Re: Dúvida - Select bem idiota !!!!
Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) ;^) Então segue uma sugestão que pode ser colocada em um script (já que pretendem executar através do SQL Plus). [ ]'s André SQL -- Preparação e verificação -- SQL SQL DESC teste Nome Nulo?Tipo - DT DATE VALOR NUMBER(9,2) SQL SELECT * FROM teste; DT VALOR --- -- 12/05/2008 00:00:00 1000 12/05/2008 00:00:00500 13/05/2008 00:00:00 2000 13/05/2008 00:00:00300 SQL CREATE OR REPLACE VIEW vw_teste 2 AS SELECT dt, SUM(valor) soma_dia 3 FROM teste 4 GROUP BY dt; View criada. SQL SELECT * FROM vw_teste; DTSOMA_DIA --- -- 12/05/2008 00:00:00 1500 13/05/2008 00:00:00 2300 SQL -- Execução -- SQL SQL ACCEPT p_dia CHAR PROMPT 'Digite o dia da data (de 01 a 31): ' Digite o dia da data (de 01 a 31): 12 SQL SQL ACCEPT p_mes CHAR PROMPT 'Digite o mês da data (de 01 a 12): ' Digite o mês da data (de 01 a 12): 05 SQL SQL ACCEPT p_ano CHAR PROMPT 'Digite o ano (com 4 dígitos): ' Digite o ano (com 4 dígitos): 2008 SQL SQL SELECT soma_dia p_mes/p_ano 2 FROM vw_teste 3 WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/'); antigo 1: SELECT soma_dia p_mes/p_ano novo 1: SELECT soma_dia 05/2008 antigo 3: WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/') novo 3: WHERE dt = TO_DATE('12/05/2008','dd/mm/') 05/2008 -- 1500 SQL SQL -- Finalização --- SQL UNDEFINE p_dia SQL UNDEFINE p_mes SQL UNDEFINE p_ano __ Em 13/05/08, Luis Eduardo Trovo [EMAIL PROTECTED] escreveu: Marcelo, A View vai ser chamada por um select no Sql Plus. O select da View tem um campo chamado data, onde vou informar o dia/mes/ano. Após executar o select na view, o retorno de determinada coluna tem que ter o apelido desta data, porém no formato mes/ano. Grato. Luís --- Marcelo [EMAIL PROTECTED] marcelo%40autopratense.com.br wrote: Luis, Ainda assim, você não respondeu de onde parte a execução da instrução SQL que cria a view, se é de uma aplicação Java/Delphi/.Net ou SqlPlus/Procedure/trigger. Desculpa ser insistente com esta pergunta, mas como você mencionou que você irá sempre atualizar a mesma view, sendo a partir de uma aplicação basta passar o comando SQL já formatado: CREATE OR REPLACE VIEW view_teste AS SELECT SYSDATE 05/2008 FROM DUAL Ou então criar uma procedure. create or replace procedure create_view(mes_ano char) is begin execute immediate('CREATE OR REPLACE VIEW view_teste AS SELECT SYSDATE ' || mes_ano || ' FROM DUAL'); end ; Atenciosamente, Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED]marcelo%40autopratense.com.br [EMAIL PROTECTED] marcelo%40autopratense.com.br * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Luis Eduardo Trovo Enviada em: terça-feira, 13 de maio de 2008 09:02 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Re: Dúvida - Select bem idiota Bom dia Marcelo, Obrigado pela resposta! Sua pergunta é muito pertinente e é importante para contextualizar o problema. Este select em questão, que é apenas um exemplo para não deixar o e-mail tão poluído, se tornará uma View. Todas as vezes que eu tiver que acionar esta View, passarei uma data como parâmetro (na clausula where). E é com base neste valor da data que eu quero compor o nome de uma coluna (dinamicamente), formatando esta como mês/ano. Grato. Luís. --- Marcelo [EMAIL PROTECTED] mailto:marcelo%40autopratense.com.br marcelo%2540autopratense.com.br e.com.br wrote: Luis, Fica difícil entender qual a finalidade exata deste seu Select. Você está usando numa aplicação Delphi/Java/.Net ou então direto no SQL Plus? Pois até agora vi todo mundo quebrar a cabeça tentando achar uma solução porém a solução pode ser bem simples se soubéssemos onde vai ser aplicado este select. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax:
Re: RES: RES: [oracle_br] Re: Dúvida - Select bem idiota !!!!
Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você poderia fazer em Delphi, Java, .NET, PHP, ... e gerar uma saída muito mais bonita e moderna? Na verdade, talvez não exista uma solução para esse problema porque esse problema não é relevante para o resto do universo de TI. O que você quer, no fim das contas, provavelmente pode ser resolvido de outra maneira. Você não quer explicar o contexto de forma mais detalhada? 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED]: Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3 FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2 FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED]andre.psantos.ti%40gmail.com wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) ;^) Então segue uma sugestão que pode ser colocada em um script (já que pretendem executar através do SQL Plus). [ ]'s André SQL -- Preparação e verificação -- SQL SQL DESC teste Nome Nulo? Tipo - DT DATE VALOR NUMBER(9,2) SQL SELECT * FROM teste; DT VALOR --- -- 12/05/2008 00:00:00 1000 12/05/2008 00:00:00 500 13/05/2008 00:00:00 2000 13/05/2008 00:00:00 300 SQL CREATE OR REPLACE VIEW vw_teste 2 AS SELECT dt, SUM(valor) soma_dia 3 FROM teste 4 GROUP BY dt; View criada. SQL SELECT * FROM vw_teste; DT SOMA_DIA --- -- 12/05/2008 00:00:00 1500 13/05/2008 00:00:00 2300 SQL -- Execução -- SQL SQL ACCEPT p_dia CHAR PROMPT 'Digite o dia da data (de 01 a 31): ' Digite o dia da data (de 01 a 31): 12 SQL SQL ACCEPT p_mes CHAR PROMPT 'Digite o mês da data (de 01 a 12): ' Digite o mês da data (de 01 a 12): 05 SQL SQL ACCEPT p_ano CHAR PROMPT 'Digite o ano (com 4 dígitos): ' Digite o ano (com 4 dígitos): 2008 SQL SQL SELECT soma_dia p_mes/p_ano 2 FROM vw_teste 3 WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/'); antigo 1: SELECT soma_dia p_mes/p_ano novo 1: SELECT soma_dia 05/2008 antigo 3: WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/') novo 3: WHERE dt = TO_DATE('12/05/2008','dd/mm/') 05/2008 -- 1500 SQL SQL -- Finalização --- SQL UNDEFINE p_dia SQL UNDEFINE p_mes SQL UNDEFINE p_ano __ Em 13/05/08, Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com escreveu: Marcelo, A View vai ser chamada por um select no Sql Plus. O select da View tem um campo chamado data, onde vou informar o dia/mes/ano. Após executar o select na view, o retorno de determinada coluna tem que ter o apelido desta data, porém no formato mes/ano. Grato. Luís --- Marcelo [EMAIL PROTECTED]marcelo%40autopratense.com.br marcelo%40autopratense.com.br wrote: Luis, Ainda assim, você não respondeu de onde parte a execução da instrução SQL que cria a view, se é de uma aplicação Java/Delphi/.Net ou SqlPlus/Procedure/trigger. Desculpa ser insistente com esta pergunta, mas como você mencionou que você irá sempre atualizar a mesma view, sendo a partir de uma aplicação basta passar o comando SQL já formatado: CREATE OR REPLACE VIEW view_teste AS SELECT SYSDATE 05/2008 FROM DUAL Ou então criar
Re: RES: RES: [oracle_br] Re: Dúvida - Select bem idiota !!!!
Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você poderia fazer em Delphi, Java, .NET, PHP, ... e gerar uma saída muito mais bonita e moderna? Na verdade, talvez não exista uma solução para esse problema porque esse problema não é relevante para o resto do universo de TI. O que você quer, no fim das contas, provavelmente pode ser resolvido de outra maneira. Você não quer explicar o contexto de forma mais detalhada? 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED]: Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3 FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2 FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED]andre.psantos.ti%40gmail.com wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) ;^) Então segue uma sugestão que pode ser colocada em um script (já que pretendem executar através do SQL Plus). [ ]'s André SQL -- Preparação e verificação -- SQL SQL DESC teste Nome Nulo? Tipo - DT DATE VALOR NUMBER(9,2) SQL SELECT * FROM teste; DT VALOR --- -- 12/05/2008 00:00:00 1000 12/05/2008 00:00:00 500 13/05/2008 00:00:00 2000 13/05/2008 00:00:00 300 SQL CREATE OR REPLACE VIEW vw_teste 2 AS SELECT dt, SUM(valor) soma_dia 3 FROM teste 4 GROUP BY dt; View criada. SQL SELECT * FROM vw_teste; DT SOMA_DIA --- -- 12/05/2008 00:00:00 1500 13/05/2008 00:00:00 2300 SQL -- Execução -- SQL SQL ACCEPT p_dia CHAR PROMPT 'Digite o dia da data (de 01 a 31): ' Digite o dia da data (de 01 a 31): 12 SQL SQL ACCEPT p_mes CHAR PROMPT 'Digite o mês da data (de 01 a 12): ' Digite o mês da data (de 01 a 12): 05 SQL SQL ACCEPT p_ano CHAR PROMPT 'Digite o ano (com 4 dígitos): ' Digite o ano (com 4 dígitos): 2008 SQL SQL SELECT soma_dia p_mes/p_ano 2 FROM vw_teste 3 WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/'); antigo 1: SELECT soma_dia p_mes/p_ano novo 1: SELECT soma_dia 05/2008 antigo 3: WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/') novo 3: WHERE dt = TO_DATE('12/05/2008','dd/mm/') 05/2008 -- 1500 SQL SQL -- Finalização
Re: RES: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED] wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) ;^) Então segue uma sugestão que pode ser colocada em um script (já que pretendem executar através do SQL Plus). [ ]'s André SQL -- Preparação e verificação -- SQL SQL DESC teste Nome Nulo? Tipo - DT DATE VALOR NUMBER(9,2) SQL SELECT * FROM teste; DT VALOR --- -- 12/05/2008 00:00:00 1000 12/05/2008 00:00:00500 13/05/2008 00:00:00 2000 13/05/2008 00:00:00300 SQL CREATE OR REPLACE VIEW vw_teste 2 AS SELECT dt, SUM(valor) soma_dia 3 FROM teste 4 GROUP BY dt; View criada. SQL SELECT * FROM vw_teste; DTSOMA_DIA --- -- 12/05/2008 00:00:00 1500 13/05/2008 00:00:00 2300 SQL -- Execução -- SQL SQL ACCEPT p_dia CHAR PROMPT 'Digite o dia da data (de 01 a 31): ' Digite o dia da data (de 01 a 31): 12 SQL SQL ACCEPT p_mes CHAR PROMPT 'Digite o mês da data (de 01 a 12): ' Digite o mês da data (de 01 a 12): 05 SQL SQL ACCEPT p_ano CHAR PROMPT 'Digite o ano (com 4 dígitos): ' Digite o ano (com 4 dígitos): 2008 SQL SQL SELECT soma_dia p_mes/p_ano 2 FROM vw_teste 3 WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/'); antigo 1: SELECT soma_dia p_mes/p_ano novo 1: SELECT soma_dia 05/2008 antigo 3: WHERE dt = TO_DATE('p_dia/p_mes/p_ano','dd/mm/') novo 3: WHERE dt = TO_DATE('12/05/2008','dd/mm/') 05/2008 -- 1500 SQL SQL -- Finalização --- SQL UNDEFINE p_dia SQL UNDEFINE p_mes SQL UNDEFINE p_ano __ Em 13/05/08, Luis Eduardo Trovo [EMAIL PROTECTED] escreveu: Marcelo, A View vai ser chamada por um select no Sql Plus. O select da View tem um campo chamado data, onde vou informar o dia/mes/ano. Após executar o select na view, o retorno de determinada coluna tem que ter o apelido desta data, porém no formato mes/ano. Grato. Luís --- Marcelo [EMAIL PROTECTED] marcelo%40autopratense.com.br wrote: Luis, Ainda assim, você não respondeu de onde parte a execução da instrução SQL que cria a view, se é de uma aplicação Java/Delphi/.Net ou SqlPlus/Procedure/trigger. Desculpa ser insistente com esta pergunta, mas como você mencionou que você irá sempre atualizar a mesma view, sendo a partir de uma aplicação basta passar o comando SQL já formatado: CREATE OR REPLACE VIEW view_teste AS SELECT SYSDATE 05/2008 FROM DUAL Ou então criar uma procedure. create or replace procedure create_view(mes_ano char) is begin execute immediate('CREATE OR REPLACE VIEW view_teste AS SELECT SYSDATE ' || mes_ano || ' FROM DUAL'); end ; Atenciosamente, Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: BLOCKED::mailto:[EMAIL PROTECTED]marcelo%40autopratense.com.br [EMAIL PROTECTED] marcelo%40autopratense.com.br * - WWW: www.autopratense.com.br BLOCKED::http://www.autopratense.com.br/ _ De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br
[oracle_br] Re: Não consigo conectar ao oracle com sql developer
Reinstala o Oracle Client --- Em oracle_br@yahoogrupos.com.br, Pedro de Souza [EMAIL PROTECTED] escreveu Pessoal, quando tento conectar o sql developer ao oracle ele me retorna a seguinte mensagem. Status: Failure -Falha no teste: Execução de E/S: The network Adapter could not establish the connection. Alguem poderia dar uma ajuda, pois estou me conectando no banco localmente. Agradeço a ajuda. Pedro. Oracle 10g 10.2.0.1.0 SQL Developer 1.1.17 [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Tamanho da Base
Boa tarde Gilvã, pode user esse script tbm, independente da versão!! select tot.tablespace_name, tot_bytes/1024 as tot_bytes, (tot_bytes - nvl(livres,0))/1024/1024/1024 as usados, livres/1024 as livres, to_char(100*nvl(livres,0)/tot_bytes,'990.0') as pct from (select tablespace_name, sum(bytes) tot_bytes from dba_data_files group by tablespace_name) tot, (select tablespace_name, count(*) qtde, sum(bytes) livres, min(bytes) menor_free, max(bytes) maior_free from dba_free_space group by tablespace_name) free where tot.tablespace_name = free.tablespace_name (+) order by pct; Abraços Em 12/05/08, Gilvã Gmail [EMAIL PROTECTED] escreveu: Caros Bom Dia, Gostaria de saber alguns comandos para por exemplo saber, Qual o tamanho atual da base de dados e etc... Grato, Gilvã Lopes [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Mudando vários indexes de tablesp ace
Boa tarde, No select abaixo só vai listar quem está na tablespace errada: select 'ALTER INDEX ' || D.OWNER || '.' || D.INDEX_NAME || ' REBUILD TABLESPACE vTABLESPACE_INDICES;' COMANDO from dba_indexes d where not (d.tablespace_name is null) and d.owner = 'vSCHEMA' and d.tablespace_name 'vTABLESPACE_DESTINO' order by D.INDEX_NAME; []'s André Mariano -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rafael Enviada em: segunda-feira, 12 de maio de 2008 17:57 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Mudando vários indexes de tablespace Boa tarde, Erroneamente muitos indices foram criadas na tablespace de dados ao invés da tablespace de indices. Efetuando um select na view DBA_INDEXES consigo ver quais estão erradas... Eu precisava saber qual a melhor forma para mover os indexes de uma tablespace para outra. Sei que o comando para mover é: ALTER INDEX idx_cliente_id REBUILD TABLESPACE tsindex; Uma forma que pensei seria fazer um procedimento para esta operação onde eu faria um loop no select da DBA_INDEXES e executando um comando de alter index que poderia ser concatenando 'ALTER INDEX ' || DBA_INDEXES.INDEX_NAME || ' REBUILD TABLESPACE TSINDEX' e em seguida disparar um EXECUTE IMMEDIATE. Alguém poderia me dar outra sugestão? -- Rafael Bahr Analista de Sistemas -- 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/ -- Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
ENC: [oracle_br] Mudando vários indexes de tablesp ace
Ops!! select 'ALTER INDEX ' || D.OWNER || '.' || D.INDEX_NAME || ' REBUILD TABLESPACE vTABLESPACE_DESTINO;' COMANDO from dba_indexes d where not (d.tablespace_name is null) and d.owner = 'vSCHEMA' and d.tablespace_name 'vTABLESPACE_DESTINO' order by D.INDEX_NAME; -Mensagem original- De: André Luis Mariano [mailto:[EMAIL PROTECTED] Enviada em: terça-feira, 13 de maio de 2008 13:16 Para: 'oracle_br@yahoogrupos.com.br' Assunto: RES: [oracle_br] Mudando vários indexes de tablespace Boa tarde, No select abaixo só vai listar quem está na tablespace errada: select 'ALTER INDEX ' || D.OWNER || '.' || D.INDEX_NAME || ' REBUILD TABLESPACE vTABLESPACE_INDICES;' COMANDO from dba_indexes d where not (d.tablespace_name is null) and d.owner = 'vSCHEMA' and d.tablespace_name 'vTABLESPACE_DESTINO' order by D.INDEX_NAME; []'s André Mariano -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rafael Enviada em: segunda-feira, 12 de maio de 2008 17:57 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Mudando vários indexes de tablespace Boa tarde, Erroneamente muitos indices foram criadas na tablespace de dados ao invés da tablespace de indices. Efetuando um select na view DBA_INDEXES consigo ver quais estão erradas... Eu precisava saber qual a melhor forma para mover os indexes de uma tablespace para outra. Sei que o comando para mover é: ALTER INDEX idx_cliente_id REBUILD TABLESPACE tsindex; Uma forma que pensei seria fazer um procedimento para esta operação onde eu faria um loop no select da DBA_INDEXES e executando um comando de alter index que poderia ser concatenando 'ALTER INDEX ' || DBA_INDEXES.INDEX_NAME || ' REBUILD TABLESPACE TSINDEX' e em seguida disparar um EXECUTE IMMEDIATE. Alguém poderia me dar outra sugestão? -- Rafael Bahr Analista de Sistemas -- 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/ -- Funções, Procedures, propostas de emprego - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos
Re: RES: RES: [oracle_br] Re: Dúvida - Select bem idiota !!!!
Luis A solução que mandei não resolve? Mas, na realidade, concordo com o Gleyson. Isso me fez lembrar de uma vez em que um gerente financeiro queria umas alterações num sistema e eu era desenvolvedor/vítima dele. ;^) Pedia umas coisas meio sem sentido... eu tentava fazer, aí ele via, depois, que não fazia sentido mesmo (mas não admitia) e mudava os requisitos constantemente... isso foi uma novela! Diante da demora (e do nada que se apresentava) o diretor financeiro me chamou para uma conversinha. Assumi minha responsabilidade, mas também expliquei que não faziam sentido as coisas que estavam sendo pedidas e que, por isso, estava difícil de definir o sistema. Conclusão (sábias palavras do velho diretor mestre Yoda): André, entendo que o gerente financeiro está equivocado. Mas você, como analista, tinha a responsabilidade de mostrar isso a ele.. Ou seja, eu estava tentando atender o cliente a qualquer custo, mas (após a orientação do diretor) percebi que, às vezes, não é possível (ou viável) atender e o melhor é explicar isso... (é praticamente uma obrigação nossa, como técnicos). :^) [ ] André Em 13/05/08, Gleyson Melo [EMAIL PROTECTED] escreveu: Cara, Se eu fosse você, diria o mesmo que eu te disse no outro email. O que ele quer não faz muito sentido do ponto de vista de informática e provavelmente não tem uma solução. Uma vez, um usuário queria de todo jeito que eu colocasse em uma página web um link que abrisse uma aplicação do Lotus Notes. O pessoal do Notes disse que não era possível. O cara queria de qualquer maneira porque disseram pra ele que tudo é possível na informática, o que não é uma verdade viável. Pergunta pra ele o verdadeiro problema que ele quer resolver. Talvez ele precise mudar o código-fonte do sqlplus, ou fazer o próprio sqlplus dele. Talvez você ganhe mais créditos com ele dando uma solução melhor. Ah, também lembro de um gerente não-técnico que fazia mil perguntas e reclamava pra mim dos arquivos temporários gerados pelo MS Office... e eu era responsável apenas pelo desenvolvimento do software da empresa, hehehe. Cuidado com essas figuras exóticas. 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com: Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] gleysonmelo%40gmail.comgleysonmelo% 40gmail.com wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você poderia fazer em Delphi, Java, .NET, PHP, ... e gerar uma saída muito mais bonita e moderna? Na verdade, talvez não exista uma solução para esse problema porque esse problema não é relevante para o resto do universo de TI. O que você quer, no fim das contas, provavelmente pode ser resolvido de outra maneira. Você não quer explicar o contexto de forma mais detalhada? 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.coml_trovo% 40yahoo.com: Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3 FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2 FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data
Re: RES: RES: [oracle_br] Re: Dúvida - Select bem idiota !!!!
eheheh Cara eu sei como é isso.. cara espero que o codigo abaixo te ajude set serveroutput on; DECLARE TYPE DatCurTyp IS REF CURSOR; dat_cv DatCurTyp; lix_rec LIXO%ROWTYPE; sql_stmt VARCHAR2(2000); v_datdate := to_date('01/05/2008','dd/mm/'); BEGIN sql_stmt := 'SELECT 500 valor,sysdate FROM dual WHERE sysdate = :d'; OPEN dat_cv FOR sql_stmt USING v_dat; LOOP FETCH dat_cv INTO lix_rec; EXIT WHEN dat_cv%NOTFOUND; DBMS_OUTPUT.PUT_LINE(to_char(v_dat,'mm/')||chr(10)|| lix_rec.valor ); END LOOP; CLOSE dat_cv; END; / 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED]: Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] gleysonmelo%40gmail.com wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você poderia fazer em Delphi, Java, .NET, PHP, ... e gerar uma saída muito mais bonita e moderna? Na verdade, talvez não exista uma solução para esse problema porque esse problema não é relevante para o resto do universo de TI. O que você quer, no fim das contas, provavelmente pode ser resolvido de outra maneira. Você não quer explicar o contexto de forma mais detalhada? 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com: Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3 FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2 FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED] andre.psantos.ti%40gmail.com andre.psantos.ti%40gmail.com wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) ;^) Então segue uma sugestão que pode ser colocada em um script (já que pretendem executar através do SQL Plus). [ ]'s André SQL -- Preparação e verificação -- SQL SQL DESC teste Nome Nulo? Tipo - DT DATE VALOR NUMBER(9,2) SQL SELECT * FROM teste; DT VALOR --- -- 12/05/2008 00:00:00 1000 12/05/2008 00:00:00 500 13/05/2008 00:00:00 2000 13/05/2008 00:00:00 300 SQL CREATE OR REPLACE VIEW vw_teste 2 AS SELECT dt, SUM(valor) soma_dia 3 FROM teste 4 GROUP BY dt; View criada. SQL SELECT * FROM vw_teste; DT SOMA_DIA ---
Re: RES: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
André/Gleyson, Concordo com cada palavras que disseram e agradeço todo o tempo que estão dando aos meus e-mails! Insisto em dizer que o problema é técnico! Meu diretor não é daqueles usuários exóticos como disse o Gleyson, ou um diretor financeiro (que não tem muita base em TI) como disse o André. Meu usuário é diretor de TI! É um cara muito, mas muito bom no que faz e manja bastante de conceitos e técnicas, tanto que ele é o diretor aqui da empresa nesta área. O que ele necessita é apenas que o apelido de uma coluna seja flexível. Tivemos ai os colegas, inclusive o André sugerindo uma solução, que passou muito perto do que preciso se em nossa tabela em questão tivesse a data dividada em dia, mês e ano, porém ainda não é isso, pois eu preciso passar a data completa e utilizar apenas um pedaço desta como apelido para uma coluna. Bom, creio que não é possível uma solução para este problema do jeito que está disposto. Terei a humildade de falar com meu diretor e lhe mostrar que o que ele quer acaba sendo impossível diante do contexto. Senhores, muito obrigado pela força! Abraços. Luís. --- Andre Santos [EMAIL PROTECTED] wrote: Luis A solução que mandei não resolve? Mas, na realidade, concordo com o Gleyson. Isso me fez lembrar de uma vez em que um gerente financeiro queria umas alterações num sistema e eu era desenvolvedor/vítima dele. ;^) Pedia umas coisas meio sem sentido... eu tentava fazer, aí ele via, depois, que não fazia sentido mesmo (mas não admitia) e mudava os requisitos constantemente... isso foi uma novela! Diante da demora (e do nada que se apresentava) o diretor financeiro me chamou para uma conversinha. Assumi minha responsabilidade, mas também expliquei que não faziam sentido as coisas que estavam sendo pedidas e que, por isso, estava difícil de definir o sistema. Conclusão (sábias palavras do velho diretor mestre Yoda): André, entendo que o gerente financeiro está equivocado. Mas você, como analista, tinha a responsabilidade de mostrar isso a ele.. Ou seja, eu estava tentando atender o cliente a qualquer custo, mas (após a orientação do diretor) percebi que, às vezes, não é possível (ou viável) atender e o melhor é explicar isso... (é praticamente uma obrigação nossa, como técnicos). :^) [ ] André Em 13/05/08, Gleyson Melo [EMAIL PROTECTED] escreveu: Cara, Se eu fosse você, diria o mesmo que eu te disse no outro email. O que ele quer não faz muito sentido do ponto de vista de informática e provavelmente não tem uma solução. Uma vez, um usuário queria de todo jeito que eu colocasse em uma página web um link que abrisse uma aplicação do Lotus Notes. O pessoal do Notes disse que não era possível. O cara queria de qualquer maneira porque disseram pra ele que tudo é possível na informática, o que não é uma verdade viável. Pergunta pra ele o verdadeiro problema que ele quer resolver. Talvez ele precise mudar o código-fonte do sqlplus, ou fazer o próprio sqlplus dele. Talvez você ganhe mais créditos com ele dando uma solução melhor. Ah, também lembro de um gerente não-técnico que fazia mil perguntas e reclamava pra mim dos arquivos temporários gerados pelo MS Office... e eu era responsável apenas pelo desenvolvimento do software da empresa, hehehe. Cuidado com essas figuras exóticas. 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com: Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] gleysonmelo%40gmail.comgleysonmelo% 40gmail.com wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você
Re: RES: RES: [oracle_br] Re: Dúvida - Sele ct bem idiota !!!!
Bingo... Acho que essa mata a charada ;) Formata a sua saída bonitinha como se fosse a saída de um select ;) POG total, mas acho que pode resolver. Lembra de depois fazer um set serveroutput off; Gostei Guilherme! Gmail - Guilherme escreveu: eheheh Cara eu sei como é isso.. cara espero que o codigo abaixo te ajude set serveroutput on; DECLARE TYPE DatCurTyp IS REF CURSOR; dat_cv DatCurTyp; lix_rec LIXO%ROWTYPE; sql_stmt VARCHAR2(2000); v_dat date := to_date('01/05/2008','dd/mm/'); BEGIN sql_stmt := 'SELECT 500 valor,sysdate FROM dual WHERE sysdate = :d'; OPEN dat_cv FOR sql_stmt USING v_dat; LOOP FETCH dat_cv INTO lix_rec; EXIT WHEN dat_cv%NOTFOUND; DBMS_OUTPUT.PUT_LINE(to_char(v_dat,'mm/')||chr(10)|| lix_rec.valor ); END LOOP; CLOSE dat_cv; END; / 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] mailto:l_trovo%40yahoo.com: Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] mailto:gleysonmelo%40gmail.com gleysonmelo%40gmail.com wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você poderia fazer em Delphi, Java, .NET, PHP, ... e gerar uma saída muito mais bonita e moderna? Na verdade, talvez não exista uma solução para esse problema porque esse problema não é relevante para o resto do universo de TI. O que você quer, no fim das contas, provavelmente pode ser resolvido de outra maneira. Você não quer explicar o contexto de forma mais detalhada? 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] mailto:l_trovo%40yahoo.com l_trovo%40yahoo.com: Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3 FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2 FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED] mailto:andre.psantos.ti%40gmail.com andre.psantos.ti%40gmail.com andre.psantos.ti%40gmail.com wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG http://desciclo.pedia.ws/wiki/POG) ;^) Então segue uma sugestão que pode ser colocada em um script (já que pretendem executar através do SQL Plus). [ ]'s André SQL --
Re: RES: RES: [oracle_br] Re: Dúvida - Select bem idiota !!!!
Luis E se fizer uma procedure? Segue abaixo uma sugestão (a parte de execução pode ser colocada em um script). [ ]'s André _ SQL -- Preparação e verificação --- SQL SQL SELECT * FROM teste; DT VALOR --- -- 12/05/2008 00:00:00 1000 12/05/2008 00:00:00500 13/05/2008 00:00:00 2000 13/05/2008 00:00:00300 SQL CREATE OR REPLACE VIEW vw_teste 2 AS SELECT dt, SUM(valor) soma_dia 3 FROM teste 4 GROUP BY dt; View criada. SQL SELECT * FROM vw_teste; DTSOMA_DIA --- -- 12/05/2008 00:00:00 1500 13/05/2008 00:00:00 2300 SQL SQL -- Procedure - SQL SQL CREATE OR REPLACE PROCEDURE sp_teste 2 ( 3 pi_data_ref IN DATE, 4 po_cursor OUT SYS_REFCURSOR 5 ) 6 IS 7 BEGIN 8 OPEN po_cursor 9 FOR 'SELECT SUM(soma_dia) ' 10 || '' || TO_CHAR(pi_data_ref, 'MM/') || '' 11 || ' FROM vw_teste' 12 || ' WHERE dt = :data' 13 USING pi_data_ref; 14 END; 15 / Procedimento criado. SQL -- Execução -- SQL SQL VAR resultado REFCURSOR SQL SQL EXEC sp_teste(TO_DATE('12/05/2008','DD/MM/'), :resultado) Procedimento PL/SQL concluído com sucesso. SQL PRINT resultado 05/2008 -- 1500 SQL _ Em 13/05/08, Luis Eduardo Trovo [EMAIL PROTECTED] escreveu: André/Gleyson, Concordo com cada palavras que disseram e agradeço todo o tempo que estão dando aos meus e-mails! Insisto em dizer que o problema é técnico! Meu diretor não é daqueles usuários exóticos como disse o Gleyson, ou um diretor financeiro (que não tem muita base em TI) como disse o André. Meu usuário é diretor de TI! É um cara muito, mas muito bom no que faz e manja bastante de conceitos e técnicas, tanto que ele é o diretor aqui da empresa nesta área. O que ele necessita é apenas que o apelido de uma coluna seja flexível. Tivemos ai os colegas, inclusive o André sugerindo uma solução, que passou muito perto do que preciso se em nossa tabela em questão tivesse a data dividada em dia, mês e ano, porém ainda não é isso, pois eu preciso passar a data completa e utilizar apenas um pedaço desta como apelido para uma coluna. Bom, creio que não é possível uma solução para este problema do jeito que está disposto. Terei a humildade de falar com meu diretor e lhe mostrar que o que ele quer acaba sendo impossível diante do contexto. Senhores, muito obrigado pela força! Abraços. Luís. --- Andre Santos [EMAIL PROTECTED]andre.psantos.ti%40gmail.com wrote: Luis A solução que mandei não resolve? Mas, na realidade, concordo com o Gleyson. Isso me fez lembrar de uma vez em que um gerente financeiro queria umas alterações num sistema e eu era desenvolvedor/vítima dele. ;^) Pedia umas coisas meio sem sentido... eu tentava fazer, aí ele via, depois, que não fazia sentido mesmo (mas não admitia) e mudava os requisitos constantemente... isso foi uma novela! Diante da demora (e do nada que se apresentava) o diretor financeiro me chamou para uma conversinha. Assumi minha responsabilidade, mas também expliquei que não faziam sentido as coisas que estavam sendo pedidas e que, por isso, estava difícil de definir o sistema. Conclusão (sábias palavras do velho diretor mestre Yoda): André, entendo que o gerente financeiro está equivocado. Mas você, como analista, tinha a responsabilidade de mostrar isso a ele.. Ou seja, eu estava tentando atender o cliente a qualquer custo, mas (após a orientação do diretor) percebi que, às vezes, não é possível (ou viável) atender e o melhor é explicar isso... (é praticamente uma obrigação nossa, como técnicos). :^) [ ] André Em 13/05/08, Gleyson Melo [EMAIL PROTECTED]gleysonmelo%40gmail.com escreveu: Cara, Se eu fosse você, diria o mesmo que eu te disse no outro email. O que ele quer não faz muito sentido do ponto de vista de informática e provavelmente não tem uma solução. Uma vez, um usuário queria de todo jeito que eu colocasse em uma página web um link que abrisse uma aplicação do Lotus Notes. O pessoal do Notes disse que não era possível. O cara queria de qualquer maneira porque disseram pra ele que tudo é possível na informática, o que não é uma verdade viável. Pergunta pra ele o verdadeiro problema que ele quer resolver. Talvez ele precise mudar o código-fonte do sqlplus, ou fazer o próprio sqlplus dele. Talvez você ganhe mais créditos com ele dando uma solução melhor. Ah, também lembro de um gerente não-técnico que fazia mil perguntas e reclamava pra mim dos arquivos temporários gerados pelo MS Office... e eu era responsável apenas pelo desenvolvimento do software da empresa, hehehe. Cuidado com essas
Re: RES: RES: [oracle_br] Re: D�vida - Select bem idiota !!!!
Mais uma vez obrigado Guilherme! Era exatamente alguma técnica assim que eu precisava. E obrigado a todos que colaboraram! Grato. Luís --- Gmail - Guilherme [EMAIL PROTECTED] wrote: eheheh Cara eu sei como é isso.. cara espero que o codigo abaixo te ajude set serveroutput on; DECLARE TYPE DatCurTyp IS REF CURSOR; dat_cv DatCurTyp; lix_rec LIXO%ROWTYPE; sql_stmt VARCHAR2(2000); v_datdate := to_date('01/05/2008','dd/mm/'); BEGIN sql_stmt := 'SELECT 500 valor,sysdate FROM dual WHERE sysdate = :d'; OPEN dat_cv FOR sql_stmt USING v_dat; LOOP FETCH dat_cv INTO lix_rec; EXIT WHEN dat_cv%NOTFOUND; DBMS_OUTPUT.PUT_LINE(to_char(v_dat,'mm/')||chr(10)|| lix_rec.valor ); END LOOP; CLOSE dat_cv; END; / 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED]: Gleyson, Veja, o problema aqui é técnico, não estou levando em conta o que a TI poderia fazer por mim. Meu usuário, neste caso é meu diretor, que é doente e não abre a mão do velho e bom SQL PLUS. Na verdade isso caiu no meu colo, porque o diretor não conseguiu resolver, pois ele tem uma boa noção de oracle, só que desta vez ele não conseguiu uma solução! Caiu no meu colo também, porque passou por várias pessoas e também não conseguiram resolver. E eu, que sou de BI, e não tenho nada a ver com o pato .. rs .. estou batendo a cabeça para resolver! Veja, o problema, como te disse, é técnico .. nada de conceitual, de estrutura interna da empresa ou de forma de desenvolvimento. Rs .. só preciso que o apelido de uma coluna seja formatado em mes/ano todas as vezes que uma data, no formato dia/mes/ano, for usado para filtrar uma view. Estou já quase jogando a toalha viu .. rs. Abraços Luís --- Gleyson Melo [EMAIL PROTECTED] gleysonmelo%40gmail.com wrote: Fala Eduardo, Se é pra rodar no SQLPlus, então não é para o usuário final. Porque a preocupação com um nome dinâmico do campo? Se é pra uma equipe de operação, que só fica monitorando, porque criar uma view se você pode criar um script com uma entrada muito mais simples, como o André mencionou? Assim, o operador não precisa saber SQL. Porque tem que ser no sqlplus, se você poderia fazer em Delphi, Java, .NET, PHP, ... e gerar uma saída muito mais bonita e moderna? Na verdade, talvez não exista uma solução para esse problema porque esse problema não é relevante para o resto do universo de TI. O que você quer, no fim das contas, provavelmente pode ser resolvido de outra maneira. Você não quer explicar o contexto de forma mais detalhada? 2008/5/13 Luis Eduardo Trovo [EMAIL PROTECTED] l_trovo%40yahoo.com: Marcelo, Primeiramente, obrigado pela atenção! Criei aqui um processo para tentar exemplificar o exemplo. Crio uma view com a data e um valor SQL SQL CREATE VIEW LIXO AS 2 SELECT F.F_DT_TRANS DT_TRANS, F.F_VL_PARCELA VL_PARCELA 3 FROM F_BUSSOLA F 4 WHERE F.F_CD_REDE = 1 5 AND F.F_PRODUTO = 224; View created SQL SQL Acesso a view Lixo, passando uma data: SQL SQL SELECT SUM(L.VL_PARCELA) 2 FROM LIXO L 3 WHERE L.DT_TRANS = '01/12/2007'; SUM(L.VL_PARCELA) - 50621,63 SQL SQL O resultado do select, tem como apelido para a coluna o SUM(L.VL_PARCELA), porém, eu preciso que este apelido seja uma formatação da data que eu filtrei o resultado (01/12/2007), ou seja, preciso que o resultado seja uma formatação de '01/12/2007' para 12/2007. Em outras palavras, o resultado que eu preciso é: 12/2007 - 50621,63 O exemplo que você montou funciona, porém eu não tenho, na tabela em questão, um campo para dia, mês e ano separadamente. Ou seja, preciso passar a data completa no where (ou parâmetro - como me expressei antes). Obrigado. Luís. --- Andre Santos [EMAIL PROTECTED] andre.psantos.ti%40gmail.com andre.psantos.ti%40gmail.com wrote: Luis Mas vocês vão tentar fazer uma view parametrizada? (na cláusula WHERE?) Até onde sei, isso não é possível... Bom... creio que isso foi um desafio de POG ( http://desciclo.pedia.ws/wiki/POG) === message truncated ===
[oracle_br] Duvida Histórico de Jobs
Fala Pessoal , Antes de minha pergunta , parabéns pelo grupo , já participo a algum tempo e varias respostas de perguntas já me ajudaram muito. É o seguinte , preciso saber o histórico de um job que já foi executado, ou seja , ele já saiu do DBA_JOBS e/ou da DBA_JOBS_RUNNING , então o que eu preciso é saber onde eu consigo pegar o TOTAL_TIME , DATA_INICIO e DATA_FIM deste JOB já executado. Meu Oracle é 9i patch 9.2.0.8 e servidor Linux ELRH4 . Abraço. No virus found in this outgoing message. Checked by AVG. Version: 7.5.524 / Virus Database: 269.23.16/1430 - Release Date: 13/5/2008 07:31 [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Mudando vários indexes de tablesp ace
Fala ai amigo , tenho um PL/SQL que pode te ajudar , pois alem de índices ele arruma por DADOS e LOBS no caso de tabelas que utilizam isso. Veja se te ajuda. declare TBS_DESTINO VARCHAR2(30):= 'TBS_SGD'; TBS_LOB VARCHAR2(30):= 'TBS_LOB'; TBS_INDEX VARCHAR2(30) := 'TBS_IDX'; Nome_schema varchar2(30):= 'SCHEMA'; /* Move tabela com colunas LOB para a tablespace especificada */ CURSOR TABLOB IS select /*+ first_rows */ 'ALTER TABLE '||dtc.OWNER||'.'||dtc.TABLE_NAME||' MOVE TABLESPACE '||tbs_destino|| ' LOB ('||COLUMN_NAME||') STORE AS LOB_'||DU.USER_ID||'_'||DO.OBJECT_ID||'_'||dtc.COLUMN_NAME|| ' (TABLESPACE '||tbs_lob||')' comando from dba_tab_columns dtc, dba_users du, dba_objects do where dtc.owner = nome_schema and dtc.data_type IN ('CLOB','BLOB') and du.username = dtc.owner and do.object_name = dtc.table_name and do.owner = dtc.owner; /* Move tabela sem colunas LOB para a tablespace especificada */ CURSOR SOTAB IS select /*+ first_rows */ distinct 'ALTER TABLE '||dtc.OWNER||'.'||dtc.TABLE_NAME||' MOVE TABLESPACE '||tbs_destino comando from dba_tab_columns dtc where dtc.owner = nome_schema and dtc.data_type not IN ('CLOB','BLOB') and exists(select 1 from dba_tables where table_name = dtc.table_name and owner = nome_schema); /* Move os �ndices a tablespace especificada */ CURSOR SOIND IS select 'alter index '||OWNER||'.'||index_name||' rebuild tablespace '||tbs_index comando from dba_indexes where owner = Nome_schema and index_type not in ('LOB'); begin for r in tablob loop begin execute immediate r.comando; exception when others then dbms_output.put_line(r.comando); end; end loop; for r in sotab loop begin execute immediate r.comando; exception when others then dbms_output.put_line(r.comando); end; end loop; for r in soind loop begin execute immediate r.comando; exception when others then dbms_output.put_line(r.comando); end; end loop; begin execute immediate 'ALTER USER '||Nome_schema||' DEFAULT TABLESPACE '||tbs_destino; exception when others then dbms_output.put_line('Atribuição da TBS para o usuário falhou'); end; end; De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de André Luis Mariano Enviada em: terça-feira, 13 de maio de 2008 13:21 Para: oracle_br@yahoogrupos.com.br Assunto: ENC: [oracle_br] Mudando vários indexes de tablespace Ops!! select 'ALTER INDEX ' || D.OWNER || '.' || D.INDEX_NAME || ' REBUILD TABLESPACE vTABLESPACE_DESTINO;' COMANDO from dba_indexes d where not (d.tablespace_name is null) and d.owner = 'vSCHEMA' and d.tablespace_name 'vTABLESPACE_DESTINO' order by D.INDEX_NAME; -Mensagem original- De: André Luis Mariano [mailto:HYPERLINK mailto:mariano.listas%40yahoo.com.br[EMAIL PROTECTED] Enviada em: terça-feira, 13 de maio de 2008 13:16 Para: HYPERLINK mailto:%27oracle_br%40yahoogrupos.com.br;'oracle_br@yahoogrupos.com.br' Assunto: RES: [oracle_br] Mudando vários indexes de tablespace Boa tarde, No select abaixo só vai listar quem está na tablespace errada: select 'ALTER INDEX ' || D.OWNER || '.' || D.INDEX_NAME || ' REBUILD TABLESPACE vTABLESPACE_INDICES;' COMANDO from dba_indexes d where not (d.tablespace_name is null) and d.owner = 'vSCHEMA' and d.tablespace_name 'vTABLESPACE_DESTINO' order by D.INDEX_NAME; []'s André Mariano -Mensagem original- De: HYPERLINK mailto:oracle_br%40yahoogrupos.com.broracle_br@yahoogrupos.com.br [mailto:HYPERLINK mailto:oracle_br%40yahoogrupos.com.br[EMAIL PROTECTED] Em nome de Rafael Enviada em: segunda-feira, 12 de maio de 2008 17:57 Para: HYPERLINK mailto:oracle_br%40yahoogrupos.com.broracle_br@yahoogrupos.com.br Assunto: [oracle_br] Mudando vários indexes de tablespace Boa tarde, Erroneamente muitos indices foram criadas na tablespace de dados ao invés da tablespace de indices. Efetuando um select na view DBA_INDEXES consigo ver quais estão erradas... Eu precisava saber qual a melhor forma para mover os indexes de uma tablespace para outra. Sei que o comando para mover é: ALTER INDEX idx_cliente_id REBUILD TABLESPACE tsindex; Uma forma que pensei seria fazer um procedimento para esta operação onde eu faria um loop no select da DBA_INDEXES e executando um comando de alter index que poderia ser concatenando 'ALTER INDEX ' || DBA_INDEXES.INDEX_NAME || ' REBUILD TABLESPACE TSINDEX' e em seguida disparar um EXECUTE IMMEDIATE. Alguém poderia me dar outra sugestão? -- Rafael Bahr Analista de Sistemas
Re: [oracle_br] Re: Inserção remota trava
Obrigado Chiappa Vou estudar o estado da sessão remota. Pelo que eu vi rapidamente no meu banco, parece que minha solução está ai. Grato novamente Abraço, Diogo - Original Message - From: jlchiappa To: oracle_br@yahoogrupos.com.br Sent: Monday, May 12, 2008 8:49 PM Subject: [oracle_br] Re: Inserção remota trava yeah, quando vc não pode usar a feature nativa quase que fatalmente isso implica em lotes de código, maior complexidade Offtopicamente, eu nem quero pensar em que tipo de performance vc obterá, já que, para não perder valores, certamente vc deve estar usando trigger FOR EACH ROW, aí se vc fize um DML de x mil linhas, olha lá a trigger sendo executada X mil vezes !!! Por mais que vc capriche, um p-code INTERPRETADO (como é um trigger PL/SQL), sendo executado milhares e milhares de vezes não dá NEM pra começar a comparar com a performance que se obteria com um código NATIVO, já compilado DENTRO do kernel do banco Ou ainda melhor, usando STREAMS enviando só o log das alterações... Ou ainda, usando CDC asíncrono, que também só envia os logs... E aquele negócio, essas opções todas exigem Enterprise, que realmente custa mais caro, mas será que ** SE ** vc mostrar pro seu cliente o ganho de performance (além da segurança de menos partes móveis, e menos programação), vc não teria um argumento a apresentar Bom, fim do off-topic, respondendo : como já disse hoje mesmo em outra resposta, um db link nada mais é do que uma CONEXÃO, uma sessão de banco, assim sendo ela aparece na V$SESSION, yes ? É lá que vc vai olhar, e (inclusive) nas versões mais recentes de banco lá vc tem também a informação de WAIT, pra saber se a sessão está inativa ou não Exemplo : == crio um db link : [EMAIL PROTECTED]:SQLcreate database link xe_o10gr2 connect to scott identified by tiger using 'o10gr2'; VÝnculo de banco de dados criado. == no instante que eu usar o dblink, a conexão é estabelecida, E (o que muita gente sempre esquece) essas conexão (como qquer outra conexão) ficará aberta até que a pessoa que a pediu feche-a (com ALTER SESSION CLOSE DATABASE LINK, esse é o comando), OU desconecte do banco, logicamente quando a conexão-pai pe fechada, as filhas (dblinks) o são também. Vamos abrir uma : [EMAIL PROTECTED]:SQLselect * from [EMAIL PROTECTED]; EMPNO ENAME SAL - -- 7369 SMITH 800 7499 ALLEN 1600 7521 WARD 1250 7566 JONES 2975 7654 MARTIN 1250 7698 BLAKE 2850 7782 CLARK 2450 7788 SCOTT 3000 7839 KING 5000 7844 TURNER 1500 7876 ADAMS 1100 7900 JAMES 950 7902 FORD 3000 7934 MILLER 1300 14 linhas selecionadas. [EMAIL PROTECTED]:SQL == se eu olhar no banco-destino, tá lá a conexão do dblink, BEM como outras locais : [EMAIL PROTECTED]:SQLselect username, osuser, machine, program, type, service_name, logon_time, seq#, last_call_et, event, status from v$session where username is not null; USERNAME OSUSER MACHINE PROGRAM LOGON_TIME SEQ# LAST_CALL_ET EVENT --- - - -- SYS USER-B468644A75\chiappa GRUPO\USER-B468644A75 sqlplusw.exe 12/05/2008 70 0 SQL*Net message to client SCOTT AUTORIDADE NT\SYSTEM USER-B468644A75 ORACLE.EXE 12/05/2008 27 4200 SQL*Net message from client HR USER-B468644A75\chiappa GRUPO\USER-B468644A75 sqlplusw.exe 12/05/2008 34 681 SQL*Net message from client == espero alguns segundos e repito a consulta : [EMAIL PROTECTED]:SQL/ USERNAME OSUSER MACHINE PROGRAM LOGON_TIME SEQ# LAST_CALL_ET EVENT --- - - -- SYS USER-B468644A75\chiappa GRUPO\USER-B468644A75 sqlplusw.exe 12/05/2008 76 0 SQL*Net message to client SCOTT AUTORIDADE NT\SYSTEM USER-B468644A75 ORACLE.EXE 12/05/2008 27 4218 SQL*Net message from client HR USER-B468644A75\chiappa GRUPO\USER-B468644A75 sqlplusw.exe 12/05/2008 34 699 SQL*Net message from client == veja que o SEQ# é o mesmo, MAS o evento não mudou e o last_call_et aumentou, então com certeza essa sessão do SCOTT ** ainda ** continua esperando pelo mesmo evento, está portando PARADA, sim ? Agora vou comitar a transação implícita que o dblink me cria , e fechar a conexão do dblink lá no banco-origem : [EMAIL PROTECTED]:SQLcommit; Commit concluÝdo. [EMAIL PROTECTED]:SQLalter session close database link xe_o10gr2; SessÒo alterada. == agora sim, se a gente checar lá no destino, a conexão remota sumiu... O mesmo acontece quando a sessão do bd origem que usou o db link se desconecta, a sessão remota no bd destino sai. ESSA é a sua resposta então : se no banco-origem a conexão do dblink foi fechada, qquer entrada remota no bd destino implica em erro/sessão pendurada, e se no banco-origem