<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Meison Almeida &#187; Informação</title>
	<atom:link href="http://www.meison.com.br/category/informacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.meison.com.br</link>
	<description>Vários assuntos com opiniões e fatos.</description>
	<lastBuildDate>Wed, 08 Sep 2010 15:58:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Como apagar itens de combo via JavaScript em Páginas</title>
		<link>http://www.meison.com.br/2010/09/02/como-apagar-itens-de-combo-via-javascript-em-paginas-2/</link>
		<comments>http://www.meison.com.br/2010/09/02/como-apagar-itens-de-combo-via-javascript-em-paginas-2/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:37:48 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Desenvolvimento/Programação]]></category>
		<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/2010/09/02/como-apagar-itens-de-combo-via-javascript-em-paginas-2/</guid>
		<description><![CDATA[Muitas vezes é necessário apagar o conteúdo de um combo ou lista de um formulário em HTML, ao invés de carregar a página novamente, há como fazer isso dinamicamente através de um script java script, basta você chamar o seguinte trecho (onde cmb1 é seu combo) no evento que você quer que acione a limpeza.
                    [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes é necessário apagar o conteúdo de um combo ou lista de um formulário em HTML, ao invés de carregar a página novamente, há como fazer isso dinamicamente através de um script java script, basta você chamar o seguinte trecho (onde cmb1 é seu combo) no evento que você quer que acione a limpeza.</p>
<p>                    for (c1 = cmb1.length-1; c1 &gt;=0; c1&#8211; )</p>
<p>                    {</p>
<p>                           cmb1.remove(c1);</p>
<p>                    }</p>
<p>Lembrem-se, é importante manter o FOR de cima para baixo, por isso garante que ele não irá se confundir na remoção dos elementos do array.</p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1965&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/09/02/como-apagar-itens-de-combo-via-javascript-em-paginas-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script para colocar em um combo somente os valores selecionados de outro (HTML/JavaScript)</title>
		<link>http://www.meison.com.br/2010/08/02/script-para-colocar-em-um-combo-somente-os-valores-selecionados-de-outro-htmljavascript/</link>
		<comments>http://www.meison.com.br/2010/08/02/script-para-colocar-em-um-combo-somente-os-valores-selecionados-de-outro-htmljavascript/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 15:57:23 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Desenvolvimento/Programação]]></category>
		<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1914</guid>
		<description><![CDATA[Quem está procurando uma forma de preencher dinamicamente outro combo (vazio) a partir de um multi-selecionavel conforme esse vai sendo selecionado, é só pegar esse exemplo de HTML abaixo. Com ele você vai conseguir fazer isso sem muito esforço.

         function selecionados(cmb1, cmb2) {
     [...]]]></description>
			<content:encoded><![CDATA[<p>Quem está procurando uma forma de preencher dinamicamente outro combo (vazio) a partir de um multi-selecionavel conforme esse vai sendo selecionado, é só pegar esse exemplo de HTML abaixo. Com ele você vai conseguir fazer isso sem muito esforço.</p>
<p><SCRIPT LANGUAGE="JavaScript">
         function selecionados(cmb1, cmb2) {
            var index = 0;
   var intC = 0;
   var intLoop = 0;
   for (intC = cmb2.length-1; intC >= 0; intC-- )
   {
    cmb2.remove(intC);
   }
            for (intLoop = 0; intLoop < cmb1.length; intLoop++) {
               if (cmb1[intLoop].selected) {
                  index = cmb2.length;
      cmb2[index] = new Option;
      cmb2[index].value = cmb1[intLoop].value;
      cmb2[index].text = cmb1[intLoop].text;
                  cmb2[index].index = intLoop;
               }
            }
            return;
         }

</SCRIPT>


 <BODY>
  <form name="f">
  <select name="s1" multiple size=5 onchange="selecionados(this,document.f.s2)">
  <option value="1">opcao1</option>
  <option value="2">opcao2</option>
  <option value="3">opcao3</option>
  <option value="4">opcao4</option>
  </select>
  <select name="s2" size=5 >
  </select>
  </form></p>
<p>&lt;HTML&gt;<br />
&lt;SCRIPT LANGUAGE=&#8221;JavaScript&#8221;&gt;<br />
         function selecionados(cmb1, cmb2) {<br />
            var index = 0;<br />
   var intC = 0;<br />
   var intLoop = 0;<br />
   for (intC = cmb2.length-1; intC &gt;= 0; intC&#8211; )<br />
   {<br />
    cmb2.remove(intC);<br />
   }<br />
            for (intLoop = 0; intLoop &lt; cmb1.length; intLoop++) {<br />
               if (cmb1[intLoop].selected) {<br />
                  index = cmb2.length;<br />
      cmb2[index] = new Option;<br />
      cmb2[index].value = cmb1[intLoop].value;<br />
      cmb2[index].text = cmb1[intLoop].text;<br />
                  cmb2[index].index = intLoop;<br />
               }<br />
            }<br />
            return;<br />
         }</p>
<p>&lt;/SCRIPT&gt;<br />
 &lt;BODY&gt;<br />
  &lt;form name=&#8221;f&#8221;&gt;<br />
  &lt;select name=&#8221;s1&#8243; multiple size=5 onchange=&#8221;selecionados(this,document.f.s2)&#8221;&gt;<br />
  &lt;option value=&#8221;1&#8243;&gt;opcao1&lt;/option&gt;<br />
  &lt;option value=&#8221;2&#8243;&gt;opcao2&lt;/option&gt;<br />
  &lt;option value=&#8221;3&#8243;&gt;opcao3&lt;/option&gt;<br />
  &lt;option value=&#8221;4&#8243;&gt;opcao4&lt;/option&gt;<br />
  &lt;/select&gt;<br />
  &lt;select name=&#8221;s2&#8243; size=5 &gt;<br />
  &lt;/select&gt;<br />
  &lt;/form&gt;<br />
 &lt;/BODY&gt;<br />
&lt;/HTML&gt;</p>
<p>O que o script faz é, toda vez que o combo que contém os dados é selecionado (na verdade alterado seu valor, ou seja sua seleção) ele chama a função &#8220;selecionados&#8221; passando o próprio combo e o de destino. A função irá limpar o conteúdo do combo de destino. Fará uma busca no combo original inteiro procurando os selecionados, estes serão copiados para o combo de destino, ficando neste somente os selecionados no primeiro.</p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1914&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/08/02/script-para-colocar-em-um-combo-somente-os-valores-selecionados-de-outro-htmljavascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dicas rápidas para tunning (performance) em queries do Oracle</title>
		<link>http://www.meison.com.br/2010/07/19/dicas-rapidas-para-tunning-performance-em-queries-do-oracle/</link>
		<comments>http://www.meison.com.br/2010/07/19/dicas-rapidas-para-tunning-performance-em-queries-do-oracle/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 23:40:11 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Desenvolvimento/Programação]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1911</guid>
		<description><![CDATA[A todos que estão iniciando as queries do Oracle, ou mesmo aqueles que já trabalham a algum tempo, podem utilizar essas dicas rápidas na montagem de queries de forma a já deixa-la de uma forma simples, com sua execução mais rápida.
Lembro a todos que as dicas aqui são para quem já conhece a estrutura de [...]]]></description>
			<content:encoded><![CDATA[<p>A todos que estão iniciando as queries do Oracle, ou mesmo aqueles que já trabalham a algum tempo, podem utilizar essas dicas rápidas na montagem de queries de forma a já deixa-la de uma forma simples, com sua execução mais rápida.</p>
<p>Lembro a todos que as dicas aqui são para quem já conhece a estrutura de queries SQL, para quem não conhece sugiro estudar um pouco primeiro para que então possa entender melhor o que será colocado aqui.</p>
<p>Alguns de vocês já devem ter ouvido que o Oracle lê as tabelas das queries de baixo para cima, mas o que isso quer dizer? Quer dizer que a ordem em que você coloca as tabelas no FROM da query, influencia na performance que ela te dá. Você deve colocar primeiro as que tem menos filtros e por último as que tem mais, sei que não é fácil de entender só assim então dou um exemplo:</p>
<p>Temos as seguintes tabelas:</p>
<p>PRODUTO, PEDIDO, PEDIDO_PRODUTO</p>
<p>Se você quiser montar um select que traga todos os dados de um determinado pedido, o filtro mais forte que você tem é da tabela pedido, então você deve coloca-la por último. Em seguida é a tabela que relaciona o Pedido com o Produto, então ela fica em penúltimo e depois o produto (é a sequencia lógica de encadeamento). Então a query ficaria melhor se o from dela fosse assim:</p>
<p><strong>SELECT * FROM PRODUTO, PEDIDO_PRODUTO, PEDIDO</strong></p>
<p>Com essa pequena e rápida dica, em alguns casos, já melhora muito a performance de algumas queries.</p>
<p>Outras dicas importantes são:</p>
<ul>
<li>Evitar usar OR na clausula WHERE</li>
<li>Não usar funções nos valores ou campos de primary key, pois assim eles não usaram seus indices</li>
</ul>
<p>Espero que com essas poucas e rápidas dicas vocês tenham ganhos em seus trabalhos.</p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1911&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/07/19/dicas-rapidas-para-tunning-performance-em-queries-do-oracle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle PL/SQL ORA-00947 Not Enough Values</title>
		<link>http://www.meison.com.br/2010/02/27/oracle-plsql-ora-00947-not-enough-values/</link>
		<comments>http://www.meison.com.br/2010/02/27/oracle-plsql-ora-00947-not-enough-values/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 14:52:12 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Desenvolvimento/Programação]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1553</guid>
		<description><![CDATA[O erro de PLSQL ORA-00947 Not Enough Values, é bem simples de ser resolvido. Ele diz o que acontece literalmente em ingles. &#8220;Não há valores suficientes&#8221;. Ou seja, quando se faz um INSERT que deve ser informada 3 colunas, mas nos valores só vão 2, esse erro ocorre, como no exemplo abaixo:
insert into cliente(id_cliente, nome, [...]]]></description>
			<content:encoded><![CDATA[<p>O erro de <strong>PLSQL ORA-00947 Not Enough Values</strong>, é bem simples de ser resolvido. Ele diz o que acontece literalmente em ingles. &#8220;Não há valores suficientes&#8221;. Ou seja, quando se faz um <strong>INSERT</strong> que deve ser informada 3 colunas, mas nos valores só vão 2, esse erro ocorre, como no exemplo abaixo:</p>
<p><strong>insert into cliente(id_cliente, nome, rg) values(1, &#8216;Joaozinho&#8217;);</strong></p>
<p>O comando insert deixa claro que são 3 colunas a serem identificadas, mas só duas estão preenchidas no values. Isso acontece também com insert select, como abaixo:</p>
<p><strong>insert into cliente(id_cliente, nome, rg) select id_cliente, nome from cliente_temp;</strong></p>
<p>Para esses comandos não resultar em erro, é só adicionar a coluna ficando dessa forma:</p>
<p><strong>insert into cliente(id_cliente, nome, rg) values(1, &#8216;Joaozinho&#8217;, &#8216;12345678-9&#8242;);</strong></p>
<p><strong>insert into cliente(id_cliente, nome, rg) select id_cliente, nome, rg from cliente_temp;</strong></p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1553&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/02/27/oracle-plsql-ora-00947-not-enough-values/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como fazer um jogo, sem muito conhecimento</title>
		<link>http://www.meison.com.br/2010/02/25/como-fazer-um-jogo-sem-muito-conhecimento/</link>
		<comments>http://www.meison.com.br/2010/02/25/como-fazer-um-jogo-sem-muito-conhecimento/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 21:16:45 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Desenvolvimento/Programação]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Utilitários]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1535</guid>
		<description><![CDATA[A algum tempo atrás escrevi um artigo sobre como fazer jogos, contei mais minha experiencia sobre fazer jogos. Fiz o colegial técnico (é no meu tempo era colegial rs) e nele meu projeto de final de curso foi um jogo, no artigo Quer saber como fazer um jogo? está bem explicada essa história.
Mas de qualquer [...]]]></description>
			<content:encoded><![CDATA[<p>A algum tempo atrás escrevi um artigo sobre <strong>como fazer jogos</strong>, contei mais minha experiencia sobre<strong> fazer jo</strong>gos. Fiz o colegial técnico (é no meu tempo era colegial rs) e nele meu projeto de final de curso foi um jogo, no artigo <a href="http://www.meison.com.br/2007/08/02/quer-saber-como-fazer-um-jogo/">Quer saber como fazer um jogo? </a>está bem explicada essa história.</p>
<p>Mas de qualquer forma muita gente fica querendo e perguntando como fazer um jogo, volto a afirmar não é fácil fazer um jogo, por mais simples que seja, mas tem algumas ferramentas que facilitam fazer um jogo bem simples. Não vá pensando que você vai fazer um jogão, você pode inovar bastante se sua idéia for boa, mas a qualidade não será tão boa, para isso é preciso muito tempo e muito estudo de programação, SIM É POSSÍVEL, só precisa de dedicação.</p>
<p>Um desses programas que ajudam quem não sabe muito de programação é o <strong>Scirra Construct</strong>, que pode ser baixado aqui: <a href="http://www.baixaki.com.br/download/scirra-construct.htm">http://www.baixaki.com.br/download/scirra-construct.htm</a></p>
<p>Nele você pode usar alguns elementos base e criar seu próprio jogo o bom é que ele é gratuito.</p>
<p>Experimente e se quiser compartilhe os seus jogos aqui.</p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1535&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/02/25/como-fazer-um-jogo-sem-muito-conhecimento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fotos do aquário que vazou em shopping em dubai (maior aquario do mundo)</title>
		<link>http://www.meison.com.br/2010/02/25/fotos-do-aquario-que-vazou-em-shopping-em-dubai-maior-aquario-do-mundo/</link>
		<comments>http://www.meison.com.br/2010/02/25/fotos-do-aquario-que-vazou-em-shopping-em-dubai-maior-aquario-do-mundo/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 20:12:27 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Notícias]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1526</guid>
		<description><![CDATA[O maior aquário do mundo dentro de um shopping de Dubai, possui a maior area de visualização também, ou seja, muito vidro. O vidro desse aquário possui 76cm de expessura e teve uma rachadura que causou uma inundação e provocou também o evacuamento de uma parte do shopping, mas nenhum animal nem pessoa foram feridos.
Vejam [...]]]></description>
			<content:encoded><![CDATA[<p>O maior aquário do mundo dentro de um shopping de Dubai, possui a maior area de visualização também, ou seja, muito vidro. O vidro desse aquário possui 76cm de expessura e teve uma rachadura que causou uma inundação e provocou também o evacuamento de uma parte do shopping, mas nenhum animal nem pessoa foram feridos.</p>
<p>Vejam fotos do aquario abaixo:</p>
<div id="attachment_1527" class="wp-caption aligncenter" style="width: 460px"><a href="http://www.meison.com.br/wp-content/uploads/2010/02/aquario_dubai.jpg"><img class="size-full wp-image-1527" title="aquario_dubai" src="http://www.meison.com.br/wp-content/uploads/2010/02/aquario_dubai.jpg" alt="" width="450" height="311" /></a><p class="wp-caption-text">Arraias no aquario</p></div>
<div id="attachment_1528" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.meison.com.br/wp-content/uploads/2010/02/aquario-de-dubai.jpg"><img class="size-medium wp-image-1528" title="aquario-de-dubai" src="http://www.meison.com.br/wp-content/uploads/2010/02/aquario-de-dubai-300x146.jpg" alt="" width="300" height="146" /></a><p class="wp-caption-text">Tubarões</p></div>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1526&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/02/25/fotos-do-aquario-que-vazou-em-shopping-em-dubai-maior-aquario-do-mundo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funções de data para Oracle</title>
		<link>http://www.meison.com.br/2010/02/25/funcoes-de-data-para-oracle/</link>
		<comments>http://www.meison.com.br/2010/02/25/funcoes-de-data-para-oracle/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 19:39:28 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Desenvolvimento/Programação]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1519</guid>
		<description><![CDATA[Em banco de dados é muito usual tratarmos de datas, particularmente gosto muito do Oracle e acho que ele não deve em nada nessa parte, ainda mais para quem utiliza a própria linguagem da Oracle o PL-SQL.
Aqui irei abordar alguns comandos para trabalhar com datas no Oracle.
 
Formatando Datas
Para formatar datas você usa o comando de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Em banco de dados é muito usual tratarmos de datas, particularmente gosto muito do Oracle e acho que ele não deve em nada nessa parte, ainda mais para quem utiliza a própria linguagem da Oracle o PL-SQL.</p>
<p style="text-align: justify;">Aqui irei abordar alguns comandos para trabalhar com datas no Oracle.</p>
<p style="text-align: justify;"> </p>
<p><strong>Formatando Datas</strong></p>
<p style="text-align: justify;">Para formatar datas você usa o comando de converter para caracter o TO_CHAR, ele irá converter para String a DATA e nessa conversão você poderá informar o formato que você quiser e inventar o seu inclusive, você pode usar os seguintes caracteres para identificar cada elemento da data:</p>
<p>DIA: &#8216;DD&#8217; (Dia em Números), &#8216;DDTH&#8217; (Dia em Números no formato americano 15TH), &#8216;DAY&#8217; (Dia por extenso)</p>
<p>MES: &#8216;MM&#8217; (Mês em Números), &#8216;MON&#8217; (Mes por extenso)</p>
<p>ANO: &#8216;YY&#8217; (Ano em dois algarismos), &#8216;YYYY&#8217; (Ano com 4 algarismos),  &#8216;RR&#8217; e &#8216;RRRR&#8217; (o mesmo dos anteriores formadado para o bug do milenio)</p>
<p>HORA: &#8216;HH&#8217; (Hora no formato americano), &#8216;HH24&#8242; (Hora no formato 24h)</p>
<p>MINUTO: &#8216;MI&#8217;</p>
<p>SEGUNDO: &#8216;SS&#8217;</p>
<p><strong>Exemplos</strong>: select to_char(sysdate, &#8216;DD/MM/YYYY HH24:MI:SS&#8217;) from dual; &#8212; formato brasileiro mais comum</p>
<p><strong>Cálculo com Datas</strong></p>
<p style="text-align: justify;">O calculo de datas sempre é necessário, saber se já passaram 2 dias de uma determinada data, qual o número de dias que faltam para uma determinada data e vários outros cenários, para isso temos as seguintes funções:</p>
<p style="text-align: justify;"> </p>
<p><strong>Operação de Soma e Subtração (+ e -)</strong></p>
<p style="text-align: justify;">Sempre calcula usando o número como dias e o calculo só pode ser feito data + ou &#8211; dias. Ficando assim:</p>
<p>select sysdate &#8211; 2 from dual;</p>
<p style="text-align: justify;">Isso retornará o dia antes de ontem. E sendo + 2 seria o dia depois de amanhã. Ou seja, soma-se ou subtrai-se uma quantidade de dias, esse número poderá ser quebrado, representando horas. Deve-se somente dividir-se 1 por 24 por exemplo para fazer o calculo em horas.</p>
<p>A única função dessas duas que funciona com 2 datas é a de subtração, que retornara a diferença em numero de dias.</p>
<p><strong>Operação de Adição de meses</strong></p>
<p>Utiliza-se o comando ADD_MONTHS, usando dessa forma:</p>
<p>select ADD_MONTHS(sysdate, 2) from dual;</p>
<p>Onde o primeiro parametro é a data e o segundo a quantidade de meses que se quer adicionar.</p>
<p>NOTA: Se é o ultimo dia do mes de janeiro, por exemplo, somando-se um mes, vai para o ultimo dia do mes de fevereiro.</p>
<p><strong>Descobrir a maior data dentre algumas datas</strong></p>
<p>O comando para descobrir é o GREATEST e pode-se passar várias datas como parametro, dessa forma:</p>
<p>select GREATEST(sysdate, sysdate-1, sysdate+3, sysdate+10, sysdate-3) from dual;</p>
<p><strong>Descobrir a menor data dentre algumas datas</strong></p>
<p>O procedimento para descorbrir é o LEAST e pode-se passar várias datas como parametro, dessa forma:</p>
<p>select LEAST(sysdate, sysdate-1, sysdate+3, sysdate+10, sysdate-3) from dual;</p>
<p><strong>Retorna o último dia de um mês</strong></p>
<p>A função que diz o ultimo dia de um mês é LAST_DAY, passado como parametro uma data dentro do mês do qual quer se saber o ultimo dia.</p>
<p>select LAST_DAY(sysdate) from dual;</p>
<p><strong>Calcula a quantidade de meses entres 2 datas</strong></p>
<p>A função MONTHS_BETWEEN irá retornar a quantidade de meses entre duas datas, mesmo que não dê um mes inteiro a função retornara um número quebrado relativo a esse período.</p>
<p>select MONTHS_BETWEEN(sysdate-10, sysdate+30) from dual;</p>
<p><strong>Retorna a data para o próximo dia da semana</strong></p>
<p>A função NEXT_DAY retorna para uma determinada data, o próximo dia da semana definido no segundo parametro, dessa forma:</p>
<p>select NEXT_DAY(sysdate, &#8216;FRI&#8217;) from dual;</p>
<p>Dessa forma retornara a próxima sexta-feira.</p>
<p>Ficam essas dicas então para quem quiser usar datas no Oracle, é claro que com essas funções você pode criar muitas outras, quem quiser ajuda com alguma necessidade, é só perguntar.</p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1519&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/02/25/funcoes-de-data-para-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como resolver o erro ORA-01422</title>
		<link>http://www.meison.com.br/2010/02/19/como-resolver-o-erro-ora-01422/</link>
		<comments>http://www.meison.com.br/2010/02/19/como-resolver-o-erro-ora-01422/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 19:36:37 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Desenvolvimento/Programação]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1430</guid>
		<description><![CDATA[O erro oracle, em código PL-SQL, ORA-01422: exact fetch returns more than request number of rows, é retornado quando em uma única váriavel é tentado retornar mais de um valor, para acertar isso há várias formas dependendo da sua necessidade, vamos a alguns casos:
1 &#8211; Query não deve retornar mais de um registro
Vamos a uma [...]]]></description>
			<content:encoded><![CDATA[<p>O erro oracle, em código PL-SQL, ORA-01422: exact fetch returns more than request number of rows, é retornado quando em uma única váriavel é tentado retornar mais de um valor, para acertar isso há várias formas dependendo da sua necessidade, vamos a alguns casos:</p>
<p><strong>1 &#8211; Query não deve retornar mais de um registro</strong></p>
<p>Vamos a uma situação hipotética, temos uma tabela de pedidos e uma tabela de clientes e queremos pegar um número de pedido dele, para isso usamos a seguinte query:</p>
<p><code>select id_pedido<br />
into vID_Pedido<br />
from pedido p, cliente c<br />
where c.nome = 'MEISON'<br />
and c.id_cliente = p.id_cliente;</code></p>
<p>Se o cliente tiver feito somente um pedido, essa query retornará só uma linha, mas se ele já for um cliente que está pedindo pela segunda ou mais vez será retornado mais de uma linha o que retornará o erro em questão, pois tentará jogar para a variavel vID_Pedido mais de um valor, o que não é possível. Para corrigir se a regra permitir é só pegar uma linha, por exemplo o ultimo pedido, ficando dessa forma:</p>
<p><code>select id_pedido<br />
into vID_Pedido<br />
from pedido p, cliente c<br />
where c.nome = 'MEISON'<br />
and c.id_cliente = p.id_cliente<br />
and rownum=1<br />
order by id_pedido desc;</code></p>
<p>O <strong>rownum=1</strong> restringe a só uma linha, mas lembrando que sem o <strong>order by</strong>, ele pega a primeira linha que trouxer do banco. O <strong>order by</strong> irá garantir que seja a ultima linha criada.<br />
<strong>2 &#8211; Query pode retornar mais de um registro</strong></p>
<p>Tendo como base o primeiro exemplo, porém precisando pegar todos os pedidos desse cliente, o que deve ser feito é tratar cada um deles individualmente, eu utilizaria o loop, ficando assim:</p>
<p><code>for vAux in (select id_pedido from pedido where id_cliente = 1)<br />
loop<br />
--Procedimento para tratar vAux.id_pedido<br />
end loop;</code></p>
<p>Dessa forma não é dado o erro ORA-01422 e trata-se da maneira certa cada um dos pedidos.</p>
<p>3 &#8211; <strong>Query não deve retornar mais de uma linha, erro de cadastro</strong></p>
<p>Isso é causado quando o sistema deveria inserir somente uma linha e por algum erro, inseriu mais de uma, provocando um erro conceitual. É claro que nesse caso deve-se corrigir a origem que é a inserção erronea de mais de uma linha, mas pode-se tratar também no destino, vamos utilizar a mesma query, ela deveria tratar os erros e ficaria dessa forma:</p>
<p><code>begin<br />
select id_pedido<br />
into vID_pedido<br />
from pedido<br />
where id_cliente = 1;<br />
exception<br />
when too_many_rows then<br />
raise_application_error(-20000,'Erro na tabela pedido, mais linhas para o cliente do que permitido.');<br />
end;</code></p>
<p>Dessa forma abordamos alguns cenários que podemos sanar esse problema. Caso você tenha algum outro problema, comente poderemos fazer outro artigo para solucionar seu problema.</p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1430&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/02/19/como-resolver-o-erro-ora-01422/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dia do Esportista</title>
		<link>http://www.meison.com.br/2010/02/18/dia-do-esportista/</link>
		<comments>http://www.meison.com.br/2010/02/18/dia-do-esportista/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 15:11:38 +0000</pubDate>
		<dc:creator>Deise Gomes</dc:creator>
				<category><![CDATA[Curiosidades]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1417</guid>
		<description><![CDATA[No dia 19 de Fevereiro comemora-se o &#8220;Dia do Esportista&#8221;.
O esporte é um aliado da saúde em qualquer idade, ele ajuda no crescimento físico, amadurecimento emocional (aprender a lidar com as frustrações), na formação moral (aprender a jogar de acordo com as regras), na socialização (aprender a fazer amigos e espírito de equipe ) e [...]]]></description>
			<content:encoded><![CDATA[<p>No dia 19 de Fevereiro comemora-se o &#8220;Dia do Esportista&#8221;.<br />
O esporte é um aliado da saúde em qualquer idade, ele ajuda no crescimento físico, amadurecimento emocional (aprender a lidar com as frustrações), na formação moral (aprender a jogar de acordo com as regras), na socialização (aprender a fazer amigos e espírito de equipe ) e no desenvolvimento da inteligência.<br />
Quanto antes a pessoa começar a se exercitar, melhor!</p>
<p><a href="http://www.meison.com.br/wp-content/uploads/2010/02/esportista.jpg"><img class="aligncenter size-medium wp-image-1418" src="http://www.meison.com.br/wp-content/uploads/2010/02/esportista-300x225.jpg" alt="" width="300" height="225" /></a></p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1417&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/02/18/dia-do-esportista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Veja fotos do acidente de helicoptero da Rede Record</title>
		<link>http://www.meison.com.br/2010/02/10/veja-fotos-do-acidente-de-helicoptero-da-rede-record/</link>
		<comments>http://www.meison.com.br/2010/02/10/veja-fotos-do-acidente-de-helicoptero-da-rede-record/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:19:26 +0000</pubDate>
		<dc:creator>Meison Almeida</dc:creator>
				<category><![CDATA[Notícias]]></category>

		<guid isPermaLink="false">http://www.meison.com.br/?p=1322</guid>
		<description><![CDATA[Caiu hoje em São Paulo, próximo a marginal o Helicoptero Aguia Dourada da Record, inclusive há imagens em vídeo do acidente. Pelo que parece houve alguma pane que fez com que o piloto aproximasse para um pouso de emergencia e rodopiando sem controle se chocou no chão do joquei.
O piloto, por informações dadas, parece ter [...]]]></description>
			<content:encoded><![CDATA[<p>Caiu hoje em São Paulo, próximo a marginal o Helicoptero Aguia Dourada da Record, inclusive há imagens em vídeo do acidente. Pelo que parece houve alguma pane que fez com que o piloto aproximasse para um pouso de emergencia e rodopiando sem controle se chocou no chão do joquei.</p>
<p>O piloto, por informações dadas, parece ter morrido e os outros passageiros estão no hospital.</p>
<p>Para ver as fotos e mais informações é só <a href="http://noticias.uol.com.br/album/100210helicoptero_album.jhtm?abrefoto=1#fotoNav=1" target="_blank">clicar aqui</a>.</p>
<img src="http://www.meison.com.br/?ak_action=api_record_view&id=1322&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.meison.com.br/2010/02/10/veja-fotos-do-acidente-de-helicoptero-da-rede-record/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
