<?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/"
	>

<channel>
	<title>Bar Solutions WebLog</title>
	<atom:link href="http://bar-solutions.com/weblog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://bar-solutions.com/weblog</link>
	<description>The beginning of knowledge is the discovery of something we do not understand. [Frank Herbert]</description>
	<pubDate>Sat, 02 Mar 2013 13:34:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Redgate Source Control for Oracle</title>
		<link>http://bar-solutions.com/weblog/?p=583</link>
		<comments>http://bar-solutions.com/weblog/?p=583#comments</comments>
		<pubDate>Sat, 02 Mar 2013 13:32:30 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=583</guid>
		<description><![CDATA[At the KScope12 conference Redgate held a live lab to develop their new tool: Redgate Source Control for Oracle. I was involved then already to help make this tool work the way developers want.
To help everyone use this tool Redgate is friendly to provide me with two (2) five (5) user licenses to their new [...]]]></description>
			<content:encoded><![CDATA[<p align="left">At the <a title="Oracle Development Tools User Group Conference | ODTUG Kscope Conference" href="http://kscope12.com/" rel="nofollow" target="_blank">KScope12</a> conference <a title="Redgate - Ingeniously simple tools" href="http://www.red-gate.com/" rel="nofollow" target="_blank">Redgate</a> held a <a title="Redgate Live Lab" href="http://allthingsoracle.com/red-gate-live-lab-source-control-for-oracle/" rel="nofollow" target="_blank">live lab</a> to develop their new tool: <a title="Redgate Source Control for Oracle" href="http://www.red-gate.com/products/oracle-development/source-control-for-oracle/" rel="nofollow" target="_blank">Redgate Source Control for Oracle</a>. I was involved then already to help make this tool work the way developers want.</p>
<p align="left">To help everyone use this tool Redgate is friendly to provide me with two (2) five (5) user licenses to their new product worth $1475 to give away.</p>
<p align="left">How can you &#8216;win&#8217; one of these licenses? Just write up why you really, really deserve a copy. Write up what problem will be fixed if you have source control or maybe in what nasty situation you got in because you didn&#8217;t have it.</p>
<p align="left">I won&#8217;t be the only judge, but the guys at Redgate will help me decide who &#8216;wins&#8217; the licenses.</p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=583</wfw:commentRss>
		</item>
		<item>
		<title>PL/SQL Developer plugins</title>
		<link>http://bar-solutions.com/weblog/?p=580</link>
		<comments>http://bar-solutions.com/weblog/?p=580#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Plugins]]></category>

		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=580</guid>
		<description><![CDATA[As the people at Allround Automations are working hard to release version 10 of their great application PL/SQL Developer, I have been busy checking/rebuilding/extending my plugins. I have added toolbar buttons to all of commands supplied by my plugins. I am not done yet. I have some more plugins to do, but I will do [...]]]></description>
			<content:encoded><![CDATA[<p align="left">As the people at <a title="Allround Automations" href="http://www.allroundautomations.com/" rel="nofollow" target="_blank">Allround Automations</a> are working hard to release version 10 of their great application <a title="Allround Automations PL/SQL Developer" href="http://www.allroundautomations.com/plsqldev.html" rel="nofollow" target="_blank">PL/SQL Developer</a>, I have been busy checking/rebuilding/extending my plugins. I have added toolbar buttons to all of commands supplied by my plugins. I am not done yet. I have some more plugins to do, but I will do them when I have some time again.</p>
<p align="left">I also added an option for you to show your appreciation for my work and donate using Paypal.</p>
<form method="post" action="https://www.paypal.com/cgi-bin/webscr">
<input name="cmd" type="hidden" />
<input name="hosted_button_id" type="hidden" />
<input border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" type="image" /> <img border="0" alt="" src="https://www.paypalobjects.com/nl_NL/i/scr/pixel.gif" width="1" height="1" /> </form>
<p>You can find the new plugins at the homepage <a href="http://bar-solutions.com">http://bar-solutions.com</a> and then follow the menu on the left:</p>
<p>[Software - Plug-ins]</p>
<p>Currently the following plugins have been rebuilt: </p>
<ul>
<li>ColumnEdit </li>
<li>CommentLine </li>
<li>Favorites </li>
<li>InitCaps </li>
<li>ReConnect </li>
<li>SaveSeparate </li>
<li>Template </li>
<li>ToggleReadOnly </li>
</ul>
<p>Update 2013-01-22: Editor Enhancement has been added.</p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=580</wfw:commentRss>
		</item>
		<item>
		<title>Case-Insensitive&#8230;</title>
		<link>http://bar-solutions.com/weblog/?p=578</link>
		<comments>http://bar-solutions.com/weblog/?p=578#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[PL/SQL]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=578</guid>
		<description><![CDATA[When building your queries you might want to search case-insensitive. We normally use the UPPER() function to accomplish this. This is kind of weird IMHO, because you have to uppercase the value you are looking for. I was wondering why we are not using the LOWER() function. I put this question on Twitter the other [...]]]></description>
			<content:encoded><![CDATA[<p align="left">When building your queries you might want to search case-insensitive. We normally use the UPPER() function to accomplish this. This is kind of weird IMHO, because you have to uppercase the value you are looking for. I was wondering why we are not using the LOWER() function. I put this question on Twitter the other day and got a lot of replies right away.</p>
<p><span id="more-578"></span></p>
<p align="right"><a href="http://twitter.com/fritshoogland"><img alt="fritshoogland&#39;s avatar" src="http://bar-solutions.com/weblog/img/Case-Insensitive/@fritshoogland.png" width="48" height="48" /> </a></p>
<p align="right"><b>Frits Hoogland</b> @fritshoogland </p>
<p align="right">
</p>
<p align="right"><a href="http://twitter.com/patch72">@patch72</a> AFAIK, old computer systems registered everything in uppercase. I know of old govmt systems. prbly people just kept on doing that.</p>
<p align="left">That would be a very plausible explanation. We do a lot of things in a special way because we are used to doing it like that.</p>
<p><p align="right"><img alt="alexnuijten&#39;s avatar" src="http://bar-solutions.com/weblog/img/Case-Insensitive/@alexnuijten.png" width="48" height="48" /> </p>
<p align="right"><b>Alex Nuijten</b> @alexnuijten </p>
<p align="right">
</p>
<p align="right"><a href="http://twitter.com/patch72">@patch72</a> wouldn&#8217;t lower() introduce special characters like accents? With upper() this will not happen. <a href="http://twitter.com/fritshoogland">@fritshoogland</a></p>
<p align="left">I don&#8217;t think this will happen. Using a special character like an accent on a character should keep that accent in both upper and lower case.</p>
<p align="right"><a href="http://twitter.com/jurgen_k"><img alt="jurgen_k&#39;s avatar" src="http://bar-solutions.com/weblog/img/Case-Insensitive/@jurgen_k.JPG" width="48" height="48" /> </a></p>
<p align="right"><b>Jurgen Kemmelings</b> @jurgen_k </p>
<p align="right">
</p>
<p align="right"><a href="http://twitter.com/alexnuijten">@alexnuijten</a> <a href="http://twitter.com/patch72">@patch72</a> ik snap het niet? SQL&gt; select upper(&#8217;hôtel&#8217;) from dual; UPPER &#8212;&#8211; HÔTEL </p>
<ul>
<li>
<div align="left">If you run this query it is like I expected. The accent is preserved.</div>
</li>
</ul>
<p><p align="right"><img alt="MarcelHoefs&#39;s avatar" src="http://bar-solutions.com/weblog/img/Case-Insensitive/@MarcelHoefs.jpg" width="48" height="48" /></p>
<p align="right"><b>Marcel Hoefs</b> @MarcelHoefs</p>
<p align="right">
</p>
<p align="right"><a href="http://twitter.com/patch72">@patch72</a> <a href="http://twitter.com/alexnuijten">@alexnuijten</a><a href="http://twitter.com/jurgen_k">@jurgen_k</a> Of: SELECT NLS_UPPER(&#8217;große&#8217;, &#8216;NLS_SORT = XGerman&#8217;) nls_uppercase, UPPER(&#8217;große&#8217;) uppercase FROM DUAL;</p>
<ul>
<li>
<div align="left">This query will replace the ß character by SS, but this is more a translation of the text. So it&#8217;s not just a case change (to UPPER) but also removing all special characters.</div>
</li>
</ul>
<p>One of the most funny replies is this one:</p>
<p align="right"><a href="http://twitter.com/cczarski"><img alt="cczarski&#39;s avatar" src="http://bar-solutions.com/weblog/img/Case-Insensitive/@cczarski.png" width="48" height="48" /></a></p>
<p align="right"><a href="http://twitter.com/cczarski"><b>Carsten Czarski</b>@cczarski</a></p>
<p align="right"><a href="http://twitter.com/patch72">@patch72</a> I always used upper(lower()) &#8230; to be sure <img src='http://bar-solutions.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>The idea is exactly the opposite. I don&#8217;t want to type the uppercase characters in my query. It involves keeping the shift key pressed (or enabling the CAPS LOCK), so using lower(upper()) would make more sense IMHO.</p>
<p>There were some more comments, but you can look them up yourself using this <a title="Twitter messages mentioning patch72" href="https://twitter.com/search?q=patch72&amp;src=typd" rel="nofollow" target="_blank">link</a>.</p>
<p>Any other ideas on why this is? Please use the comments <img src='http://bar-solutions.com/weblog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=578</wfw:commentRss>
		</item>
		<item>
		<title>Using External Tables&#8230;</title>
		<link>http://bar-solutions.com/weblog/?p=575</link>
		<comments>http://bar-solutions.com/weblog/?p=575#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=575</guid>
		<description><![CDATA[
.code, .code pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.code pre { margin: 0em; }
.code .rem { color: #ff0000; }
.code .kwrd { color: #008080; }
.code .str { color: #0000ff; }
.code .op { color: #0000c0; }
.code .preproc { color: #cc6633; }
.code .asp { background-color: #ffff00; }
.code .html { color: #800000; }
.code .attr { color: [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
<p>.code, .code pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.code pre { margin: 0em; }
.code .rem { color: #ff0000; }
.code .kwrd { color: #008080; }
.code .str { color: #0000ff; }
.code .op { color: #0000c0; }
.code .preproc { color: #cc6633; }
.code .asp { background-color: #ffff00; }
.code .html { color: #800000; }
.code .attr { color: #ff0000; }
.code .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.code .lnum { color: #606060; }</style>
<p align="left">I have been appointed Track Leader for the Developer&#8217;s Toolkit for <a title="KScope13" href="http://www.kscope13.com" rel="nofollow" target="_blank">KScope13</a>. This involves voting on abstracts. Everyone in the group should rate the abstracts on a scale of 1 to 5. Where 1 is not good (Not appropriate&#8230;) and 5 is very good (Highlight of the conference&#8230;). After all the members of the group have voted, my task is to figure out which abstracts have the highest rating.</p>
<div align="left">
<p><span id="more-575"></span></p>
</div>
<p align="left">The website shows the different abstract, your own rating and the average voting over all voters.</p>
<p align="left"><a href="http://bar-solutions.com/weblog/img/ExternalTables/VotingOnline.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="VotingOnline" border="0" alt="VotingOnline" src="http://bar-solutions.com/weblog/img/ExternalTables/VotingOnline.png" width="644" height="329" /></a><a href="http://bar-solutions.com/weblog/img/ExternalTables/VotingReport.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="VotingReport" border="0" alt="VotingReport" align="right" src="http://bar-solutions.com/weblog/img/ExternalTables/VotingReport.png" width="244" height="65" /></a></p>
<p align="left">Coming up with the top sessions involves a lot of scrolling, writing stuff down and trying to make out the rankings. Luckily the site also provides the possibility to download the voting in a Comma Separated Values format so you can open it in Excel.</p>
<p align="left"><a href="http://bar-solutions.com/weblog/img/ExternalTables/VotingExcel.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="VotingExcel" border="0" alt="VotingExcel" src="http://bar-solutions.com/weblog/img/ExternalTables/VotingExcel.png" width="644" height="221" /></a></p>
<p align="left">Since I am not (yet) an Excel Wizard this is not what I am looking for. Still takes a lot of work, which I don&#8217;t want to do.</p>
<p align="left"><a title="Oracle" href="http://www.oracle.com/" rel="nofollow" target="_blank">Oracle</a> provides the possibility to use a file with Comma Separated Values as an <a title="External Tables Concepts" href="http://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm" rel="nofollow" target="_blank">External Table</a>. Taking this approach gives me the opportunity to apply my SQL skills to the data and have the database do the heavy lifting on figuring out which abstracts get the highest rating.</p>
<p align="left">To create the external table I have to take these steps:</p>
<p align="left">1) create a directory</p>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   1:  </span><span class="rem">-- Create directory </span></pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">   2:  </span><span class="kwrd">create or replace directory</span> EXTERNALDATA</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   3:  </span>  <span class="kwrd">as</span> <span class="str">'C:\MySources\ExternalData'</span>;</pre>
</div>
<p align="left">2) save the file to this folder on the database server (in this case my own machine)</p>
<p align="left"><a href="http://bar-solutions.com/weblog/img/ExternalTables/ExternalFiles.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ExternalFiles" border="0" alt="ExternalFiles" src="http://bar-solutions.com/weblog/img/ExternalTables/ExternalFiles.png" width="644" height="368" /></a></p>
<p align="left">3) create an External Table:</p>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   1:  </span><span class="rem">-- Create table</span></pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">   2:  </span><span class="kwrd">create table</span> KSCOPE13_EXT_CSV</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   3:  </span>(</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">   4:  </span>  session_num       <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   5:  </span>  session_title     <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">   6:  </span>  session_submitter <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   7:  </span>  primary_presenter <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">   8:  </span>  co_presenter      <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   9:  </span>  voter             <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  10:  </span>  total             <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  11:  </span>  vote              <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>),</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  12:  </span>  session_comment   <span class="kwrd">VARCHAR2</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  13:  </span>)</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  14:  </span><span class="kwrd">organization external</span></pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  15:  </span>(</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  16:  </span>  <span class="kwrd">type</span> ORACLE_LOADER</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  17:  </span>  <span class="kwrd">default directory</span> EXTERNALDATA</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  18:  </span>  <span class="kwrd">access parameters</span> </pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  19:  </span>  (</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  20:  </span>    <span class="kwrd">records</span> delimited <span class="kwrd">by</span> newline</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  21:  </span>    NODISCARDFILE</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  22:  </span>    NOBADFILE</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  23:  </span>    NOLOGFILE</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  24:  </span>    <span class="kwrd">SKIP</span> 1</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  25:  </span>    fields terminated <span class="kwrd">by</span> <span class="str">','</span></pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  26:  </span>    optionally enclosed <span class="kwrd">by</span> <span class="str">'&quot;'</span></pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  27:  </span>    missing field <span class="kwrd">values</span> are <span class="kwrd">null</span></pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  28:  </span>    (  Session_Num       <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  29:  </span>      ,Session_title     <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  30:  </span>      ,Session_Submitter <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  31:  </span>      ,Primary_Presenter <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  32:  </span>      ,Co_Presenter      <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  33:  </span>      ,Voter             <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  34:  </span>      ,Total             <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  35:  </span>      ,Vote              <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  36:  </span>      ,Session_Comment   <span class="kwrd">char</span>(<span class="str">4000</span>)</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  37:  </span>    )</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  38:  </span>  )</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  39:  </span>  <span class="kwrd">location</span> (EXTERNALDATA:<span class="str">'kscope2013.csv'</span>)</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">  40:  </span>)</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">  41:  </span><span class="kwrd">reject limit UNLIMITED</span>;</pre>
</div>
<p align="left">4) Create the query:</p>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">SELECT</span> <span class="kwrd">DISTINCT</span> t.session_title</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">   2:  </span>               ,t.session_submitter</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   3:  </span>               ,<span class="kwrd">round</span>(<span class="kwrd">avg</span>(t.total) <span class="kwrd">over</span> (<span class="kwrd">partition by</span> t.session_title, t.session_submitter),4) average</pre>
</div>
<div class="code" align="left">
<pre><span class="lnum">   4:  </span>  <span class="kwrd">FROM</span> kscope13_ext_csv t</pre>
</div>
<div class="code" align="left">
<pre class="alt"><span class="lnum">   5:  </span> <span class="kwrd">order</span> <span class="kwrd">by</span> 3 <span class="kwrd">desc</span>;</pre>
</div>
<p align="left">5) Check the results</p>
<p align="left"><a href="http://bar-solutions.com/weblog/img/ExternalTables/ResultsFromSQL.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ResultsFromSQL" border="0" alt="ResultsFromSQL" src="http://bar-solutions.com/weblog/img/ExternalTables/ResultsFromSQL.png" width="644" height="100" /></a></p>
<p align="left">This makes my job a lot easier. Well, maybe not a lot, just a bit. Still had to build the schedule for the top abstracts. But at least it&#8217;s easier to decide which session get selected and which don&#8217;t and, maybe most important, I got to use my Oracle skills on a non-Oracle related issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=575</wfw:commentRss>
		</item>
		<item>
		<title>Long time no see</title>
		<link>http://bar-solutions.com/weblog/?p=572</link>
		<comments>http://bar-solutions.com/weblog/?p=572#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[APEX]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[PL/SQL]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=572</guid>
		<description><![CDATA[It&#8217;s been quite some time since my last post. It&#8217;s not that I haven&#8217;t been busy, just didn&#8217;t find the time or a subject to write a blog about. Until now.
I came up with something I didn&#8217;t know. I have a pipelined table function where I want to suppress a record from appearing when something [...]]]></description>
			<content:encoded><![CDATA[<p align="left">It&#8217;s been quite some time since my last post. It&#8217;s not that I haven&#8217;t been busy, just didn&#8217;t find the time or a subject to write a blog about. Until now.</p>
<p align="left">I came up with something I didn&#8217;t know. I have a pipelined table function where I want to suppress a record from appearing when something is wrong (no data found or something like that). I know, suppressing errors is wrong, but in this case I will log the error. I just didn&#8217;t want it to appear in my data because the receiving application will generate errors and reject the entire set of data.</p>
<p><span id="more-572"></span></p>
<p align="left">The easy way, of course, is not to pipe a row at all, but that would mean adding a lot of complexity to my code so I decided to try something different. Just set the record to NULL before it gets piped out. Adding this worked for my situation but it made me wonder: Is there an empty record added to the &#8216;table&#8217;?</p>
<p>This is why I wrote a simple script to try this:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">CREATE OR REPLACE TYPE</span> dummy_t <span class="kwrd">AS OBJECT</span></pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">   2:  </span>(</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   3:  </span>  dummy_id   <span class="kwrd">NUMBER</span>,</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">   4:  </span>  dummy_name <span class="kwrd">VARCHAR2(30)</span></pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   5:  </span>)</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">   6:  </span>/</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   7:  </span><span class="kwrd">CREATE OR REPLACE TYPE</span> dummy_ntt <span class="kwrd">AS TABLE OF</span> dummy_t</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">   8:  </span>/</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   9:  </span><span class="kwrd">CREATE OR REPLACE FUNCTION</span> dummy_f <span class="kwrd">RETURN</span> dummy_ntt</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  10:  </span>  <span class="kwrd">PIPELINED IS</span></pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">  11:  </span>  l_returnvalue dummy_t;</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  12:  </span><span class="kwrd">BEGIN</span></pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">  13:  </span>  l_returnvalue := dummy_t(1, <span class="str">'Patrick'</span>);</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  14:  </span>  <span class="kwrd">PIPE ROW</span>(l_returnvalue);</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">  15:  </span>  l_returnvalue := <span class="kwrd">NULL</span>;</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  16:  </span>  <span class="kwrd">PIPE ROW</span>(l_returnvalue);</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">  17:  </span>  l_returnvalue := dummy_t(2, <span class="str">'Mitchell'</span>);</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  18:  </span>  <span class="kwrd">PIPE ROW</span>(l_returnvalue);</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">  19:  </span>  <span class="kwrd">RETURN</span>;</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  20:  </span><span class="kwrd">END</span> dummy_f;</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">  21:  </span>/</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  22:  </span><span class="kwrd">SELECT</span> *</pre>
</div>
<div class="csharpcode">
<pre class="alt"><span class="lnum">  23:  </span>  <span class="kwrd">FROM</span> <span class="kwrd">TABLE</span>(dummy_f)</pre>
</div>
<div class="csharpcode">
<pre><span class="lnum">  24:  </span>/</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p align="left">As you can see, there are three PIPE ROW statements so you might expect three rows in the result. But luckily <a title="Oracle" href="http://www.oracle.com/" rel="nofollow" target="_blank">Oracle</a> is smart enough to suppress the empty row:</p>
<table border="0" cellspacing="0" cellpadding="2" width="346">
<tbody>
<tr>
<td valign="top" width="94">DUMMY_ID</td>
<td valign="top" width="250">DUMMY_NAME</td>
</tr>
<tr>
<td valign="top" width="94">&#8212;&#8212;&#8212;-</td>
<td valign="top" width="250">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</td>
</tr>
<tr>
<td valign="top" width="94">1</td>
<td valign="top" width="250">Patrick</td>
</tr>
<tr>
<td valign="top" width="94">2</td>
<td valign="top" width="250">Mitchell</td>
</tr>
</tbody>
</table>
<div class="csharpcode">
<pre></pre>
</div>
<style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
<p align="left">This is what I hoped would happen and luckily it did so.</p>
<p align="left">What else have I been up to?<br />I am currently in the process of rating abstracts for <a title="KScope13" href="http://www.kscope13.com" rel="nofollow" target="_blank">KScope13</a> being a Track Lead for the <small>Developer&#8217;s Toolkit. <br />I have published a couple of articles on the <a title="All Things Oracle - Content for Oracle Developers and DBAs" href="http://allthingsoracle.com/" rel="nofollow" target="_blank">AllThingsOracle</a> website with the latest addition being an article on Edition Based Redefinition (<a title="Edition Based Redefinition &ndash; Part 1 &ndash; All Things Oracle" href="http://allthingsoracle.com/edition-based-redefinition-part-1/" rel="nofollow" target="_blank">part 1</a>, part 2 hopefully next week). Other articles I wrote here can be found at <a title="Patrick Barel &ndash; All Things Oracle" href="http://allthingsoracle.com/author/patrick-barel/" rel="nofollow" target="_blank">this link</a>.<br />Besides that</small> I&#8217;m still playing around with <a title="Oracle Application Express" href="https://apex.oracle.com/" rel="nofollow" target="_blank">APEX</a> trying to rebuild a program I wrote a long time ago in <a title="PHP: Hypertext Preprocessor" href="http://www.php.net/" rel="nofollow" target="_blank">PHP</a> using <a title="MySQL: The world's most popular open source database" href="http://dev.mysql.com/" rel="nofollow" target="_blank">MySQL</a> to build my own version of <a title="Delicious" href="http://delicious.com/home" rel="nofollow" target="_blank">Delicious</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=572</wfw:commentRss>
		</item>
		<item>
		<title>KScope12</title>
		<link>http://bar-solutions.com/weblog/?p=569</link>
		<comments>http://bar-solutions.com/weblog/?p=569#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[PL/SQL]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=569</guid>
		<description><![CDATA[Just back from a full week in San Antonio for KScope12. I really had a good time. ODTUG provides us with the best conference for developers in the world. Seen some great sessions, met up with some old friends, made a lot of new ones, met in real life with some people I knew only [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Just back from a full week in San Antonio for <a title="Oracle Development Tools User Group Conference | ODTUG Kscope Conference" href="http://kscope12.com/" rel="nofollow" target="_blank">KScope12</a>. I really had a good time. <a title="Oracle Development Tools User Group" href="http://www.odtug.com" rel="nofollow" target="_blank">ODTUG</a> provides us with the best conference for developers in the world. Seen some great sessions, met up with some old friends, made a lot of new ones, met in real life with some people I knew only from the internet.</p>
<p><span id="more-569"></span></p>
<p align="left"><a href="/weblog/img/KScope12/DSCF1557.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="The Alamo" border="0" alt="The Alamo" align="right" src="/weblog/img/KScope12/DSCF1557_thumb.jpg" width="240" height="180" /></a></p>
<p align="left">On Saturday I went to the <a title="The San Antonio River Walk" href="http://www.thesanantonioriverwalk.com/" rel="nofollow" target="_blank">River Walk</a> with <a title="Chet Justice" href="https://www.facebook.com/chet.justice" rel="nofollow" target="_blank">Chet Justice</a>, <a title="Jeff Smith" href="https://www.facebook.com/thatJeffSmith" rel="nofollow" target="_blank">Jeff Smith</a>, <a title="Dan McGhan" href="https://www.facebook.com/dmcghan" rel="nofollow" target="_blank">Dan McGhan</a> and <a title="Galo Balda" href="https://www.facebook.com/galo.balda" rel="nofollow" target="_blank">Galo Balda</a>. Here we went to see The Alamo, had dinner at <a title="Café Ole" href="http://www.cafeole.us/" rel="nofollow" target="_blank">Caf&eacute; Ole</a> and met up with <a title="Tim Gorman" href="http://www.linkedin.com/in/timgorman" rel="nofollow" target="_blank">Tim Gorman</a> and <a title="Kellyn Pot&#39;Vin" href="http://www.linkedin.com/in/kellynpotvin" rel="nofollow" target="_blank">Kellyn Pot&#8217;Vin</a>.</p>
<p align="left">On Sunday the Sunday symposiums took place. I kinda mixed the Application Express symposium with the DB &amp; Developers toolbox. Saw some nice new things on APEX 4.2 (early adopter available <a title="Apex 4.2 Early adopter" href="https://apexea.oracle.com." rel="nofollow" target="_blank">here</a>), learnt some nice stuff about the <a title="Oracle" href="http://www.oracle.com/" rel="nofollow" target="_blank">Oracle</a> Cloud got some insight on how Oracle handles your queries.</p>
<p align="left"><a href="/weblog/img/KScope12/IMG_0244.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Birth of the ADF Challenge?" border="0" alt="Birth of the ADF Challenge?" align="left" src="/weblog/img/KScope12/IMG_0244_thumb.jpg" width="240" height="180" /></a>The night started with the speaker/ambassador/mentor reception where I got to meet up with so<a href="/weblog/img/KScope12/311633_3172907932157_1744961348_n.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ORACLENERD" border="0" alt="ORACLENERD" align="right" src="/weblog/img/KScope12/311633_3172907932157_1744961348_n_thumb.jpg" width="180" height="240" /></a>me old and new friends. Then it was right into the welcoming reception where I had some good laughs watching the thirsty games. Also, I want to thank Jeff Smith for getting me the first t-shirt of the conference. The ORACLENERD shirt.</p>
<p align="left">On Monday the KScope sessions started. I went to see Tim Gorman on RDBMS Forensics. Learn a bit about how you can troubleshoot errors in you production database. Then it was Jonathan Lewis who explained Single Table Access Paths. I have been working with Oracle for over 10 years but only now I think I understand what&#8217;s going on &#8216;under the hood&#8217;. Then it was off to the APEX track for <a title="Themes4APEX" href="http://www.themes4apex.com" rel="nofollow" target="_blank">Christian Rokitta</a> on APEX and JQuery Mobile. There was no ambassador for this session, so I decided to do this. I gained the ambassador&#8217;s badge for this.</p>
<p align="left">After lunch I decided not to go see any session and to prepare for my own session: Should Invoker Rights Be Used. I am not too pleased with how it went. In my opinion it was too short, I was too tired (which you could hear in my speech) but the good thing is I had <a title="Steven Feuerstein" href="http://www.stevenfeuerstein.com/" rel="nofollow" target="_blank">Steven Feuerstein</a> and Bryn Llewellyn in the audience, so we had a couple of nice discussions at the and of the session.</p>
<p align="left">After this there was the ACE reception. My very first one. It is nice to be part of this. Had some chats with a couple of other ACE&#8217;s amongst who <a title="Peter Raganitsch" href="https://www.facebook.com/peter.raganitsch" rel="nofollow" target="_blank">Peter Raganitsch</a>.</p>
<p align="left">Then it was time for the keynote by <a title="Cary Millsap" href="https://www.facebook.com/cary.millsap" rel="nofollow" target="_blank">Cary Millsap</a>. This was totally not technical, but man, how right he was. You can checkout the keynote <a title="Cary Millsap Keynote Presentation" href="http://www.youtube.com/watch?v=aZgnOJATJvk" rel="nofollow" target="_blank">here</a>. If you have an hour or so to spare, I urge you to take a look.</p>
<p align="left">APEX Open Mic Night concluded day 1 for me. It was nice to see what people are doing using APEX. How different all their applications are. Shows how you can really build what you want using APEX.</p>
<p align="left">Tuesday started off with a nice session by <a title="Ask Tom" href="http://asktom.oracle.com" rel="nofollow" target="_blank">Tom Kyte</a>. Five things you probably didn&#8217;t know about PL/SQL. </p>
<blockquote>
<p align="left">More Code = More Bugs<br />
    <br />Less Code = Less Bugs</p>
</blockquote>
<blockquote>
<p align="right">The fastest way to do something is NOT doing it</p>
</blockquote>
<p align="left">I decided to skip the vendor track, so my next session was Optimizing a Two-table Join by Jonathan Lewis. This was actually a continuation of the session of the day before. Even more insight for me. Then it was off to the lunch and learn session with a panel of Jonathan Lewis, Cary Millsap, Steven Feuerstein and Maria Colgan. Some nice discussions on amongst others Table Functions.</p>
<p align="left">Next stop was a presentation by <a title="Rick Greenwald" href="https://www.facebook.com/rick.greenwald.1" rel="nofollow" target="_blank">Rick Greenwald</a> on RESTful Web Services. Not only can APEX 4.2 consume Web Services, it can now also provide them. Then it was <a title="Kim Berg Hansen" href="https://www.facebook.com/kim.berg.hansen" rel="nofollow" target="_blank">Kim Berg Hansen</a>&#8217;s first appearance on the KScope stage with a session on Analytic Functions. </p>
<p align="left">Closing session for the day was Debugging PL/SQL with <a title="Oracle SQL Developer" href="http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html" rel="nofollow" target="_blank">SQL Developer</a> by Jeff Smith. It was nice to see how it works. I think SQL Developer is better in remote debugging than <a title="Allround Automations PL/SQL Developer" href="http://www.allroundautomations.com/plsqldev.html" rel="nofollow" target="_blank">PL/SQL Developer</a>. But in other aspects they are mostly equivalent to each other.</p>
<p align="left">The evening was concluded for me by having a nice dinner with the people of <a title="Redgate - Ingeniously simple tools" href="http://www.red-gate.com/" rel="nofollow" target="_blank">Redgate</a>. Dinner with Cary Millsap, Dominic Delmolino, Martin Giffy D&#8217;Souza and of course the people from Redgate. After this I went up to my room to run some final checks on my presentation on Wednesday.</p>
<p align="left">Wednesday started of with a presentation by Cary Milsap on how instrumentation is useful in your code. After this I attended a session by Steven Feuerstein on Error Management in PL/SQL. Then it was time for my second presentation. Can collections speed up your PL/SQL? This one just went great, I am so happy with this one. I even had to skip through a couple of slides to finish in time. If you were there, I hope you enjoyed it.</p>
<p align="left">In the afternoon I first attended a session about Binding by Tom Kyte and for the last session I was an ambassador for the session by Anthony Rayner on building Highly accessible products using APEX. This presentation was co-done by Paul Holliman who is blind. It was amazing to see and hear how he uses APEX to develop applications. It&#8217;s amazing how he finds his way around the builder using a screen reader.</p>
<p align="left">The night was reserved for the Ranch and Rodeo Special Event which was a night filled with live music, armadillo races, a mechanical bull and a full-blown rodeo. The rodeo is something I would not go to myself, but it has been a great experience to have seen it at least once.</p>
<p align="left">The final day of the conference started of with &#8216;An Oracle Geek&#8217;s Guide to Successful Dating&#8217; which was, as you already expected, all about using dates and timestamps. Then there was the closing session, which is kind of strange when there are still two sessions to come.</p>
<p align="left">I went to go see <a title="Kent Graziano" href="https://www.facebook.com/kent.graziano" rel="nofollow" target="_blank">Kent Graziano</a> with his talk on Reverse Engineering using SQL Developer Data Modeler. To bad his projector had some trouble, but he managed pretty good.</p>
<p align="left">The final session of my KScope12 experience was APEX Developer Pro Secrets by Peter Raganitsch. Peter is maintaining the <a title="ApexLib Framework" href="http://apexlib.oracleapex.info/" rel="nofollow" target="_blank">ApexLib Framework</a> which was built by him and Patrick Wolf. There were other things in the presentation, some of which I knew, some of which were new.</p>
<p align="left">The day was closed off by having dinner with <a title="Erik van Roon" href="http://www.linkedin.com/in/erikvanroon" rel="nofollow" target="_blank">Erik van Roon</a> at a restaurant at the River Walk in San Antonio. After that I hung out in the bar at the hotel with Lori and her husband Ryan, amongst others.</p>
<p align="left">On Friday I want home again, which was great too. It&#8217;s great to be back with my wife and kids after a great week in San Antonio. Thanks to ODTUG for organizing such a great conference. I hope to be back for <a title="KScope13" href="http://www.kscope13.com" rel="nofollow" target="_blank">KScope13</a> in New Orleans.</p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=569</wfw:commentRss>
		</item>
		<item>
		<title>Version Control</title>
		<link>http://bar-solutions.com/weblog/?p=565</link>
		<comments>http://bar-solutions.com/weblog/?p=565#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=565</guid>
		<description><![CDATA[When building software you often make a lot of changes to your code, only to find out is isn&#8217;t working anymore. What change broke the code? What was the previous, working, version like? Can I go back in time to undo my changes? And if you are working in a team: Who made the last [...]]]></description>
			<content:encoded><![CDATA[<p align="left">When building software you often make a lot of changes to your code, only to find out is isn&#8217;t working anymore. What change broke the code? What was the previous, working, version like? Can I go back in time to undo my changes? And if you are working in a team: Who made the last change to the code?</p>
<p align="left">All questions that cannot be easily answered, except for the &#8216;go back in time&#8217; one. You can&#8217;t (yet). This is where version control comes in. </p>
<p align="left">I have worked with a number of version control systems and they all have their pros and cons.</p>
<p align="left">First there was manual backing up of files, before you start working on a program. This works perfectly if you are the only developer on the project and if you are very precise in what you do. Problem is when you accidently overwrite a working version of the code with a buggy version.</p>
<p align="left">Then there was <a href="http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe">Microsoft Visual Sourcesafe</a>, which was a lot better already, because before you could change a program, you had to check it out (like getting it from a safe (hence the icon)) and when you were done with it, you checked it in (put it back in the safe) so other people could see you changes and continue working on them. I made it nearly impossible for two or more people to work on the same file at the same time. Biggest problem with VSS was (IMHO) that there was only a Windows client available (at that time at least). Luckily this was the main development platform for lots of Oracle developers at the time, and my personal favorite IDE PL/SQL Developer by Allround Automations has a nice plugin available so you don&#8217;t have to leave your IDE to perform the check-out and check-in of your code.</p>
<p align="left">After this there were some other tools I used, mostly in the freeware world.</p>
<p align="left">At my current job we decided to use <a href="http://en.wikipedia.org/wiki/Apache_Subversion">SubVersion</a> which is open source and has a lot of clients available, for different platforms. I mainly use <a href="http://en.wikipedia.org/wiki/TortoiseSVN">TortoiseSVN</a> which has a nice Windows explorer integration. One of the main advantages of this tool is that multiple developers can work on the same file and when they check-in their changes, the tool tries to merge the files automatically. If it finds stuff it cannot merge automatically it prompts the user to decide what change should be kept.</p>
<p align="left">The biggest problem when developing code in a team is working on the same file simultaneously. Most of the tools available overcome this problem either by making it virtually impossible to simultaneously work on the same file or by automatically merging the different versions.</p>
<p align="left">Redgate is currently developing <a href="http://www.red-gate.com/products/oracle-development/source-control-for-oracle/">Source Control for Oracle</a>. What is needed for this tool is to be decided by us, the developers. Make sure you visit the site and fill out the <a href="https://www.surveymk.com/s/DTR9WFR">survey</a> to have a better chance of you desires to make it into a version of the product.</p>
<p align="left">And, if you are at <a title="Oracle Development Tools User Group Conference | ODTUG Kscope Conference" href="http://kscope12.com/" rel="nofollow" target="_blank">KScope12</a>, stop by their booth to <a title="Live, rapid development guided by Kscope12 attendees" href="http://www.red-gate.com/products/oracle-development/source-control-for-oracle/kscope12" rel="nofollow" target="_blank">see</a> the product being used in a live development environment.</p>
<p align="left">Ref:</p>
<p align="left"><a href="http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe">http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe</a></p>
<p align="left"><a href="http://en.wikipedia.org/wiki/Apache_Subversion">http://en.wikipedia.org/wiki/Apache_Subversion</a></p>
<p align="left"><a href="http://en.wikipedia.org/wiki/TortoiseSVN">http://en.wikipedia.org/wiki/TortoiseSVN</a></p>
<p align="left"><a href="http://www.red-gate.com/products/oracle-development/source-control-for-oracle/">http://www.red-gate.com/products/oracle-development/source-control-for-oracle/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=565</wfw:commentRss>
		</item>
		<item>
		<title>What&#8217;s he doing anyway&#8230;</title>
		<link>http://bar-solutions.com/weblog/?p=563</link>
		<comments>http://bar-solutions.com/weblog/?p=563#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=563</guid>
		<description><![CDATA[I know I haven&#8217;t been really active on my blog lately, but that is mainly because I don&#8217;t have much energy left after a full day of work. Beside that, I am using most of my spare time to create my presentation for KScope12 and for a guest college at a school beginning next month. [...]]]></description>
			<content:encoded><![CDATA[<p align="left">I know I haven&#8217;t been really active on my blog lately, but that is mainly because I don&#8217;t have much energy left after a full day of work. Beside that, I am using most of my spare time to create my presentation for <a title="Oracle Development Tools User Group Conference | ODTUG Kscope Conference" href="http://kscope12.com/" rel="nofollow" target="_blank">KScope12</a> and for a guest college at a school beginning next month. I have been publishing stuff on <a title="AllThingsOracle" href="http://allthingsoracle.com" rel="nofollow" target="_blank">AllThingsOracle.com</a>. </p>
<p><span id="more-563"></span></p>
<p align="left">Articles:</p>
<table border="0" cellspacing="0" cellpadding="2" width="800">
<tbody>
<tr>
<td valign="top" width="340">Table Functions</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/using-table-unctions/">http://allthingsoracle.com/using-table-unctions/</a></td>
</tr>
<tr>
<td valign="top" width="340">Collections</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/collections-in-oracle-pt-1/">http://allthingsoracle.com/collections-in-oracle-pt-1/</a></td>
</tr>
<tr>
<td valign="top" width="340">&nbsp;</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/collections-in-oracle-part-2/">http://allthingsoracle.com/collections-in-oracle-part-2/</a></td>
</tr>
<tr>
<td valign="top" width="340">Bulk Processing</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/bulk-processing-in-oracle-part-1/">http://allthingsoracle.com/bulk-processing-in-oracle-part-1/</a></td>
</tr>
<tr>
<td valign="top" width="340">&nbsp;</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/bulk-processing-in-oracle-part-2/">http://allthingsoracle.com/bulk-processing-in-oracle-part-2/</a></td>
</tr>
<tr>
<td valign="top" width="340">Invoker Rights</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/invoker-rights-part-1/">http://allthingsoracle.com/invoker-rights-part-1/</a></td>
</tr>
<tr>
<td valign="top" width="340">&nbsp;</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/invoker-rights-part-2/">http://allthingsoracle.com/invoker-rights-part-2/</a></td>
</tr>
<tr>
<td valign="top" width="340">Dynamic Show/Hide in APEX</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/dynamic-showhide-in-apex/">http://allthingsoracle.com/dynamic-showhide-in-apex/</a></td>
</tr>
<tr>
<td valign="top" width="340">Timing in PL/SQL</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/timing-in-plsql/">http://allthingsoracle.com/timing-in-plsql/</a></td>
</tr>
<tr>
<td valign="top" width="340">Caching</td>
<td valign="top" width="460"><a href="http://allthingsoracle.com/caching-part-1/">http://allthingsoracle.com/caching-part-1/</a></td>
</tr>
</tbody>
</table>
<p align="left">After KScope12 things will hopefully be a bit more relaxed again, so I will have some more time to write, either on the blog or on AllThingsOracle.</p>
<p align="left">Just to let you guys know I am still alive <img src='http://bar-solutions.com/weblog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=563</wfw:commentRss>
		</item>
		<item>
		<title>AMIS proud sponsor of the SQL Challenge</title>
		<link>http://bar-solutions.com/weblog/?p=559</link>
		<comments>http://bar-solutions.com/weblog/?p=559#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=559</guid>
		<description><![CDATA[
SQL today is the foundation for any successful application. Whether it is a SOA implementation, an ADF or APEX application, a Forms application or any other usage of the Oracle Database (or any other relational database), SQL is key for the success. AMIS has embraced the evolution of SQL through the subsequent releases of the [...]]]></description>
			<content:encoded><![CDATA[<p><a class="thickbox" title="PL/SQL Challenge" href="http://www.plsqlchallenge.com" rel="nofollow" target="_blank"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="PLSQL Challenge" border="0" alt="PLSQL Challenge" src="http://bar-solutions.com/weblog/img/PLSQL_Challenge.png" width="446" height="89" /></a></p>
<p>SQL today is the foundation for any successful application. Whether it is a SOA implementation, an ADF or APEX application, a Forms application or any other usage of the Oracle Database (or any other relational database), SQL is key for the success. AMIS has embraced the evolution of SQL through the subsequent releases of the Oracle Database - trying to stay abreast of the latest features and adopting new functionality whenever it made pragmatic sense. In 2004 we developed the 7Up training - that introduced Oracle developers who started their Oracle careers with Oracle7 to the wonders of Oracle 9i. Through the years, this training evolved into a 7-11 training and we kept on presenting, demonstrating and writing about new ways of using SQL - through gems such as inline views and subquery factoring, analytic functions, the model clause, aggregations, multi-table DML, Flashback, intervals and many more. We must be one of the few companies in the world able to demonstrate all of the above using the DEPT and EMP tables in the SCOTT schema.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="how-to-overcome-public-speaking-300x300" border="0" alt="questions" align="left" src="http://bar-solutions.com/weblog/img/how-to-overcome-public-speaking-300x300.jpg" width="110" height="110" />In the month of April, we make another community contribution in the area of Oracle SQL: AMIS is the proud sponsor of the SQL Challenge - the world wide quiz for Oracle SQL developers that publishes weekly challenges, accessible via <a title="PL/SQL Challenge" href="http://www.plsqlchallenge.com" rel="nofollow" target="_blank">http://www.plsqlchallenge.com</a>. Various SQL-smiths at AMIS gathered to produce five challenges to be published in five consecutive weeks. Challenges ranging from beginner level questions through the advanced level questions. Demonstrating the power of SQL and the fun of playing with it. Hopefully you find a mix of both easy and mind boggling questions. Maybe there are some things you had never thought of or even heard of and can be really useful in your day-to-day work.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Cup" border="0" alt="Cup" align="right" src="http://bar-solutions.com/weblog/img/Cup.png" width="60" height="89" />AMIS provides prizes for contestants during AMIS April at the SQL Challenge. We will be selecting 2 winners from the people who have the highest score for all the quizzes. Besides that we will also select one random winner from all the people who played at least one of the five quizzes. Prizes include your choice of a SQL related eBook and for the first place winner also a SQL related book.</p>
<p>You can expect new quizzes every Saturday for the coming 5 weeks starting March 31st.</p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=559</wfw:commentRss>
		</item>
		<item>
		<title>What&#8217;s going on&#8230;</title>
		<link>http://bar-solutions.com/weblog/?p=556</link>
		<comments>http://bar-solutions.com/weblog/?p=556#comments</comments>
		<pubDate>Wed, 31 Dec 1969 19:00:00 +0000</pubDate>
		<dc:creator>Patch</dc:creator>
		
		<category><![CDATA[APEX]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[PL/SQL]]></category>

		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://bar-solutions.com/weblog/?p=556</guid>
		<description><![CDATA[I has been quite some time since I posted anything on my blog. That is mainly because I am busy with other things at the moment:

I will be presenting at the OGh Apex Event in Zeist (the Netherlands). I will be doing a presentation on how to build a plug-in for Apex, together with Alex [...]]]></description>
			<content:encoded><![CDATA[<p align="left">I has been quite some time since I posted anything on my blog. That is mainly because I am busy with other things at the moment:</p>
<p><span id="more-556"></span></p>
<p align="left"><a href="http://www.ogh.nl"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="ogh" border="0" alt="ogh" align="left" src="http://bar-solutions.com/weblog/img/ogh.gif" width="86" height="80" /></a>I will be presenting at the <a title="OGH APEX DAG 26 maart 2012 FIGI Zeist" href="http://www.ogh.nl/page.aspx?event=154" rel="nofollow" target="_blank">OGh Apex Event</a> in Zeist (the Netherlands). I will be doing a presentation on how to build a plug-in for Apex, together with <a title="Notes on Oracle" href="http://nuijten.blogspot.com/" rel="nofollow" target="_blank">Alex Nuijten</a>.</p>
<p align="left">&#160;</p>
<p align="left"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="PLSQL Challenge" border="0" alt="PLSQL Challenge" align="right" src="http://bar-solutions.com/weblog/img/PLSQL_Challenge.png" width="244" height="40" /></p>
<p align="left"><a title="AMIS" href="http://www.amis.nl" rel="nofollow" target="_blank">AMIS</a> will be sponsoring the <a title="PL/SQL Challenge" href="http://www.plsqlchallenge.com" rel="nofollow" target="_blank">SQL Challenge</a> in April. I have made a couple of questions for that. Lucas Jellema also made a couple of questions and we are now in the process of reviewing and approving them.</p>
<p align="left">I will be doing two presentations at <a title="Oracle Development Tools User Group Conference | ODTUG Kscope Conference" href="http://kscope12.com/" rel="nofollow" target="_blank">KScope12</a>.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="know-your-rights" border="0" alt="know-your-rights" align="left" src="http://bar-solutions.com/weblog/img/know-your-rights.jpg" width="244" height="190" /><a href="http://kscope12.com/component/seminar/seminarslist#Should%20Invoker%20Rights%20Be%20Used" rel="nofollow" target="_blank">Should Invoker Rights Be Used?</a> </p>
<p>When: Monday June 25, Session 3, 11:30 am - 12:30 pm </p>
<p><em>How can you ensure users use only their data and not someone else&#8217;s? How can you do this with minimal effort? How can you get rid of multiple codebases. How can you (partially) protect yourself against SQL Injection? Explore these questions and more in this informative session.</em></p>
<p>&#160;</p>
<p>&#160;</p>
<p>And</p>
<p align="left"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="computer" border="0" alt="computer" align="right" src="http://bar-solutions.com/weblog/img/computer.jpg" width="244" height="163" /><a href="http://kscope12.com/component/seminar/seminarslist#Can%20Collections%20Speed%20Up%20Your%20PL/SQL?" rel="nofollow" target="_blank">Can Collections Speed Up Your PL/SQL?</a> </p>
<p>When: Wednesday June 27, Session 12, 8:30 am - 9:30 am </p>
<p><em>Collections (array-like structures in PL/SQL) are used in two of the most important performance features of PL/SQL: BULK COLLECT for data retrieval and FORALL for data modification. This session will cover these topics and more.</em></p>
<p>&#160;</p>
<p>And, as a cherry on the cake, I received my ACE Award yesterday</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Oracle_ACE_Award" border="0" alt="Oracle_ACE_Award" src="http://bar-solutions.com/weblog/img/Oracle_ACE_Award.jpg" width="364" height="484" /></p>
]]></content:encoded>
			<wfw:commentRss>http://bar-solutions.com/weblog/?feed=rss2&amp;p=556</wfw:commentRss>
		</item>
	</channel>
</rss>
