<?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>Juliano Ribeiro &#187; SQL</title>
	<atom:link href="http://julianoribeiro.com.br/blog/category/desenvolvimento/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://julianoribeiro.com.br/blog</link>
	<description>Development and Design</description>
	<lastBuildDate>Mon, 06 Sep 2010 13:46:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Criando listas com PHP/MySQL</title>
		<link>http://julianoribeiro.com.br/blog/criando-listas-com-phpmysql/</link>
		<comments>http://julianoribeiro.com.br/blog/criando-listas-com-phpmysql/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 01:51:45 +0000</pubDate>
		<dc:creator>Juliano Ribeiro</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Pessoal]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://julianoribeiro.com.br/blog/?p=362</guid>
		<description><![CDATA[Hoje resolvi variar um pouco. Como estou ajudando um amigo no seu TCC, escrevi para ele uma função bem legal, pelo menos eu achei, depois me falem o que acharam. Eu vou colocar ela aqui em duas etapas. Nessa primeira, vamos criar uma lista, somente passando uma tabela do banco. A assinatura da função vai [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje resolvi variar um pouco. Como estou ajudando um amigo no seu TCC, escrevi para ele uma função bem legal, pelo menos eu achei, depois me falem o que acharam. Eu vou colocar ela aqui em duas etapas. Nessa primeira, vamos criar uma lista, somente passando uma tabela do banco. A assinatura da função vai ficar mais ou menos assim:</p>
<pre class="brush: php;">
&lt;?php
	include_once('conexao.php');
	include('funcoes.php');

	CriarLista('Estado');
?&gt;
</pre>
<p>A conexão é bem simples, faça como quiser.<br />
Já a função, baseia-se na instrução SQL: <strong>SHOW FULL COLUMNS FROM TB_CLIENTE</strong>. Essa instrução retorna uma lista com os campos: <em>Field, Type, Collation, Null, Key, Default, Extra Privileges e Comment</em>. Para nós, nesse momento só interessam Field e Comment. Explico. Pegaremos os campos que retornam nessa SQL e com eles, comporemos a nova SQL com os campos que a primeira retornou, ficou claro?<br />
Nos comments da tabela em questão, eu coloquei a descrição dos campos, tipo o campo <strong>EST_CODIGO</strong> tem o comentário <strong>&#8220;Código&#8221;</strong>.<br />
<span id="more-362"></span><br />
Para usar, eu fiz o trechinho de código abaixo:</p>
<pre class="brush: php;">
		$sql = 'SHOW FULL COLUMNS FROM ' . $tabela; // Crio a string
		$res = mysql_query($sql); // Envia a string para o banco e guarda o retorno
		$sql = 'select '; // Crio a nova SQL
		$estrutura = array(); // Inicializo o array
		$pos = 1; // Inicializa 1ª posição

		echo &quot;&lt;table border='1'&gt;
				&lt;tr&gt;&quot;; // Monta o início da tabela

		while ($lin = mysql_fetch_assoc($res)) {
			echo &quot;&lt;td&gt;&quot;.$lin['Comment'].&quot;&lt;/td&gt;&quot;;
			$estrutura[$pos++] = $lin;
			$sql .= $lin['Field'] . ', ';
		}
		echo &quot;&lt;/tr&gt;&quot;;
		$sql = substr($sql, 0, strlen($sql) - 2);
		$sql .= &quot; from &quot;. $tabela ;
</pre>
<p>Com esse código ai conseguimos compor uma nova SQL, algo como <em>Select EST_CODIGO, EST_NOME from ESTADO</em>. Assim, poderemos fazer a nova consulta como deve ser. Além disso, todo o resultado daquele <em><strong>resource</strong></em> fica armazenado em um array chamado <strong>estrutura</strong>, para consulta posterior.<br />
Com esses dados em mãos, vamos simplesmente fazer a nova consulta no banco e trazer os dados para dentro da tabela. Veja como fica esse trecho:</p>
<pre class="brush: php;">
		$res = mysql_query($sql);
		while ($lin = mysql_fetch_assoc($res)) {
			echo &quot;&lt;tr&gt;&quot;;
			foreach ($estrutura as $campo) {
				echo &quot;&lt;td&gt;&quot;.$lin[$campo['Field']].&quot;&lt;/td&gt;&quot;;
			}
			echo &quot;&lt;/tr&gt;&quot;;
		}
		echo &quot;&lt;/table&gt;&quot;;
</pre>
<p>e assim funciona, e no próximo post eu coloco o arquivo para download e também como paginar o resultado dessa função.</p>
<p>Até mais</p>
]]></content:encoded>
			<wfw:commentRss>http://julianoribeiro.com.br/blog/criando-listas-com-phpmysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Executando scripts via Delphi</title>
		<link>http://julianoribeiro.com.br/blog/executando-scripts-via-delphi/</link>
		<comments>http://julianoribeiro.com.br/blog/executando-scripts-via-delphi/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 14:24:09 +0000</pubDate>
		<dc:creator>Juliano Ribeiro</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[ErrorCode]]></category>
		<category><![CDATA[Interbase]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[TMemo]]></category>
		<category><![CDATA[TSQLConnection]]></category>

		<guid isPermaLink="false">http://julianoribeiro.com.br/blog/?p=325</guid>
		<description><![CDATA[Já me ocorreu necessidade de rodar alguns scripts simples, para dar manutenção em clientes. A procedure abaixo coleta o conteúdo de um TMemo e envia para banco executar. Qualquer ErrorCode maior que zero indica que houve uma mensagem de retorno negativa. Infelizmente não tenho essa tabela de códigos disponível. procedure TForm1.ExecutaScript; var ErrorCode: Integer; begin [...]]]></description>
			<content:encoded><![CDATA[<p>Já me ocorreu necessidade de rodar alguns <strong>scripts </strong>simples, para dar manutenção em clientes. A <strong>procedure </strong>abaixo coleta o conteúdo de um <strong>TMemo </strong>e envia para banco executar. Qualquer <strong>ErrorCode </strong>maior que zero indica que houve uma mensagem de retorno negativa. Infelizmente não tenho essa tabela de códigos disponível.</p>
<pre class="brush: delphi;">
procedure TForm1.ExecutaScript;
var
  ErrorCode: Integer;
begin
   try
      ErrorCode := Conexao.ExecuteDirect(MemoSQL.Text);
      // Conexao é um TSQLConnection já conectado ao banco.

      if ErrorCode = 0 then
          ShowMessage('Script rodado com sucesso');

      {Se retornar diferente de &quot;0&quot; é porque algo de errado aconteceu}
      if ErrorCode &lt;&gt; 0 then
         raise Exception.Create( 'Error: code = ' + IntToStr( ErrorCode ) )

   except
      on E: Exception do
         ShowMessage( E.Message );
   end
end;
</pre>
<p>Só testei em <strong>Oracle</strong>, mas não vejo motivos para não rodar em <strong>Interbase</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://julianoribeiro.com.br/blog/executando-scripts-via-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oficina de SQL</title>
		<link>http://julianoribeiro.com.br/blog/oficina-de-sql/</link>
		<comments>http://julianoribeiro.com.br/blog/oficina-de-sql/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 11:16:03 +0000</pubDate>
		<dc:creator>Juliano Ribeiro</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Oficina]]></category>
		<category><![CDATA[Produtec]]></category>
		<category><![CDATA[Treinamento]]></category>

		<guid isPermaLink="false">http://julianoribeiro.com.br/blog/?p=259</guid>
		<description><![CDATA[Tem alguns dias já, realizamos na Produtec uma oficina sobre SQL. A nossa equipe é bastante jovem, então valeu a pena rever alguns conceitos básicos aplicáveis à base de dados de nosso maior produto, o Maximum (ERP). Abaixo seguem os slides. Qualquer dúvida podem perguntar que eu esclareço. Talvez fique um pouco descontextualizado, porque os [...]]]></description>
			<content:encoded><![CDATA[<p>Tem alguns dias já, realizamos na <a href="http://www.produtec.com.br">Produtec</a> uma oficina sobre SQL. A nossa equipe é bastante jovem, então valeu a pena rever alguns conceitos básicos aplicáveis à base de dados de nosso maior produto, o Maximum (ERP).</p>
<p>Abaixo seguem os slides. Qualquer dúvida podem perguntar que eu esclareço.</p>
<p><iframe height="335" width="450" name="Treinamento-SQL-ppt" style="border:1px solid #AABBCC" scrolling="no" src="http://show.zoho.com/embed?id=559650000000005001" frameBorder="0"></iframe></p>
<p>Talvez fique um pouco descontextualizado, porque os slides não são nada sem a narração, mas como me pediram, ai está.</p>
]]></content:encoded>
			<wfw:commentRss>http://julianoribeiro.com.br/blog/oficina-de-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
