<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Reusable PL/SQL</title>
	<atom:link href="http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/feed/" rel="self" type="application/rss+xml" />
	<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/</link>
	<description>Technology with a focus on Oracle, Application Express and Linux</description>
	<lastBuildDate>Fri, 13 Nov 2009 11:47:58 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: charlie</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1511</link>
		<dc:creator>charlie</dc:creator>
		<pubDate>Thu, 25 Sep 2008 00:48:21 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1511</guid>
		<description>isn&#039;t oracle responsible for dropping the ball on this?

i mean, java has reusable code libraries because someone wrote one and then the governing body decided that that component would be shipped with the sdk. so, you can write your own but why do it?

microsoft governs a number of their own languages and does the same.

oracle and pl/sql? sure, there are some api libraries but not anywhere as extensive. oracle just doesn&#039;t seem to be interested...</description>
		<content:encoded><![CDATA[<p>isn&#8217;t oracle responsible for dropping the ball on this?</p>
<p>i mean, java has reusable code libraries because someone wrote one and then the governing body decided that that component would be shipped with the sdk. so, you can write your own but why do it?</p>
<p>microsoft governs a number of their own languages and does the same.</p>
<p>oracle and pl/sql? sure, there are some api libraries but not anywhere as extensive. oracle just doesn&#8217;t seem to be interested&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seems like a good idea&#8230; &#124; El Mundo Con Otros Ojos</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1416</link>
		<dc:creator>Seems like a good idea&#8230; &#124; El Mundo Con Otros Ojos</dc:creator>
		<pubDate>Wed, 25 Jun 2008 21:42:23 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1416</guid>
		<description>[...] Check it out - and comment away&#8230;&#160; Tyler has a good idea/thought going on over there. [...]</description>
		<content:encoded><![CDATA[<p>[...] Check it out &#8211; and comment away&#8230;&#160; Tyler has a good idea/thought going on over there. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Looking for great PL/SQL &#171; I&#8217;m just a simple DBA on a complex production system</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1407</link>
		<dc:creator>Looking for great PL/SQL &#171; I&#8217;m just a simple DBA on a complex production system</dc:creator>
		<pubDate>Tue, 24 Jun 2008 02:23:57 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1407</guid>
		<description>[...] think the issue is somewhat related to the problem Tyler Muth raised about lack of reusable PL/SQL modules. Oracle has an amazing community, but for some reason we don&#8217;t share our code and we [...]</description>
		<content:encoded><![CDATA[<p>[...] think the issue is somewhat related to the problem Tyler Muth raised about lack of reusable PL/SQL modules. Oracle has an amazing community, but for some reason we don&#8217;t share our code and we [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gerry Bragg</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1406</link>
		<dc:creator>Gerry Bragg</dc:creator>
		<pubDate>Fri, 20 Jun 2008 17:35:03 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1406</guid>
		<description>PL/SQL is simply a niche language loosely based on ADA.  For database programming it is an excelent language and you certainly can achieve good seperation of business logic (if not in mid-tier) and transctional logic. There is nothing in PL/SQL that prevents this.  For projects that don&#039;t need, have the time for managing the object-relational mapping configuration of a persistence layer such as hibernate, toplink, kodo, etc.. then a PL/SQL self-generating transational layer can be a lifesaver and scales very well. YOu can also reduce &#039;round trips&#039; between the app server and database w/o using Oracle JDBC extensions, compare new and old values using check sums before you update that column in the 50m row table that is a fk supported by a low cardinality index.  ALSO underutilized is how easy it is to do &#039;metaprogramming&#039; in PL/SQL using dynamic SQL.  This works well to genericize verious routines like data validation logic.  In order to maximize reuse thru &#039;real time&#039; code generation (dynamic sql) and static code generation you must have well established conventions that are consistently followed. Anyone who has done Ruby/Rails coding and not pluralized their table names will know what I mean.</description>
		<content:encoded><![CDATA[<p>PL/SQL is simply a niche language loosely based on ADA.  For database programming it is an excelent language and you certainly can achieve good seperation of business logic (if not in mid-tier) and transctional logic. There is nothing in PL/SQL that prevents this.  For projects that don&#8217;t need, have the time for managing the object-relational mapping configuration of a persistence layer such as hibernate, toplink, kodo, etc.. then a PL/SQL self-generating transational layer can be a lifesaver and scales very well. YOu can also reduce &#8217;round trips&#8217; between the app server and database w/o using Oracle JDBC extensions, compare new and old values using check sums before you update that column in the 50m row table that is a fk supported by a low cardinality index.  ALSO underutilized is how easy it is to do &#8216;metaprogramming&#8217; in PL/SQL using dynamic SQL.  This works well to genericize verious routines like data validation logic.  In order to maximize reuse thru &#8216;real time&#8217; code generation (dynamic sql) and static code generation you must have well established conventions that are consistently followed. Anyone who has done Ruby/Rails coding and not pluralized their table names will know what I mean.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Treat</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1400</link>
		<dc:creator>Robert Treat</dc:creator>
		<pubDate>Sun, 08 Jun 2008 20:43:05 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1400</guid>
		<description>I don&#039;t think is something specific to pl/sql, I think it is more systemic of 1) writing procedural code, which by nature tends to be quite tied to specific schemas, and 2) much of that code is being written by DBA&#039;s who don&#039;t have a culture of shared development like many app coders. This seems true regardless of databases; ie. I don&#039;t know of any big libraries of T-SQL code, and of the few PostgreSQL libraries, none are particular well known within that community either. Actually with Postgres we probably get more re-use out of the scripting language based procedural languages like pl/perl, which can make use of CPAN modules inside the database.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think is something specific to pl/sql, I think it is more systemic of 1) writing procedural code, which by nature tends to be quite tied to specific schemas, and 2) much of that code is being written by DBA&#8217;s who don&#8217;t have a culture of shared development like many app coders. This seems true regardless of databases; ie. I don&#8217;t know of any big libraries of T-SQL code, and of the few PostgreSQL libraries, none are particular well known within that community either. Actually with Postgres we probably get more re-use out of the scripting language based procedural languages like pl/perl, which can make use of CPAN modules inside the database.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1399</link>
		<dc:creator>Dan</dc:creator>
		<pubDate>Sun, 08 Jun 2008 00:27:41 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1399</guid>
		<description>Tyler,

Ok, it&#039;s out there...

http://sourceforge.net/projects/tapigen/

Let me know what you think!

Regards,
Dan</description>
		<content:encoded><![CDATA[<p>Tyler,</p>
<p>Ok, it&#8217;s out there&#8230;</p>
<p><a href="http://sourceforge.net/projects/tapigen/" rel="nofollow">http://sourceforge.net/projects/tapigen/</a></p>
<p>Let me know what you think!</p>
<p>Regards,<br />
Dan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1398</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Sat, 07 Jun 2008 19:27:28 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1398</guid>
		<description>Tyler,

Sorry, I didn&#039;t see your response until now. Actually, it doesn&#039;t do either...

tapiGen looks for tables that meet the following conditions:

      1. NUMBER OR VARCHAR2 column named &quot;id&quot;
      2. VARCHAR2 column named &quot;created_by&quot;
      3. DATE column named &quot;created_date&quot;
      4. VARCHAR2 column named &quot;modified_by&quot;
      5. DATE column named &quot;modified_date&quot;
      6. SEQUENCE named TABLE_NAME_SEQ

For each table it finds that meets these minimums, a package is created. The name of the package follows the format: TABLE_NAME_TE. Each of these packages has a variety of functions and procedures that make common table operations a lot easier.

I&#039;m working on getting the first release out today. I&#039;ll let you know when you can take a look if you&#039;re interested.

Regards,
Dan</description>
		<content:encoded><![CDATA[<p>Tyler,</p>
<p>Sorry, I didn&#8217;t see your response until now. Actually, it doesn&#8217;t do either&#8230;</p>
<p>tapiGen looks for tables that meet the following conditions:</p>
<p>      1. NUMBER OR VARCHAR2 column named &#8220;id&#8221;<br />
      2. VARCHAR2 column named &#8220;created_by&#8221;<br />
      3. DATE column named &#8220;created_date&#8221;<br />
      4. VARCHAR2 column named &#8220;modified_by&#8221;<br />
      5. DATE column named &#8220;modified_date&#8221;<br />
      6. SEQUENCE named TABLE_NAME_SEQ</p>
<p>For each table it finds that meets these minimums, a package is created. The name of the package follows the format: TABLE_NAME_TE. Each of these packages has a variety of functions and procedures that make common table operations a lot easier.</p>
<p>I&#8217;m working on getting the first release out today. I&#8217;ll let you know when you can take a look if you&#8217;re interested.</p>
<p>Regards,<br />
Dan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tyler Muth</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1397</link>
		<dc:creator>Tyler Muth</dc:creator>
		<pubDate>Thu, 05 Jun 2008 12:23:05 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1397</guid>
		<description>Steven,

The Akismet spam filter was a little aggressive with a few of the comments posted here.  It&#039;s usually pretty good, but clearly not this time. I really appreciate your input on this as you&#039;ve been thinking about it and trying to solve it for a lot longer than I have.  Did you have any legal issues with Quest as far as posting code?  Is there any license attached to your code?</description>
		<content:encoded><![CDATA[<p>Steven,</p>
<p>The Akismet spam filter was a little aggressive with a few of the comments posted here.  It&#8217;s usually pretty good, but clearly not this time. I really appreciate your input on this as you&#8217;ve been thinking about it and trying to solve it for a lot longer than I have.  Did you have any legal issues with Quest as far as posting code?  Is there any license attached to your code?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven Feuerstein</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1396</link>
		<dc:creator>Steven Feuerstein</dc:creator>
		<pubDate>Thu, 05 Jun 2008 12:14:53 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1396</guid>
		<description>One other thing: PL/SQL does offer a minimal but functional set of OO constructs - object types not support inheritance, for example. But it will never become a TRUE OO language - and it doesn&#039;t have to in order to promote and achieve excellent code reuse - through packages.

SF</description>
		<content:encoded><![CDATA[<p>One other thing: PL/SQL does offer a minimal but functional set of OO constructs &#8211; object types not support inheritance, for example. But it will never become a TRUE OO language &#8211; and it doesn&#8217;t have to in order to promote and achieve excellent code reuse &#8211; through packages.</p>
<p>SF</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven Feuerstein</title>
		<link>http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1395</link>
		<dc:creator>Steven Feuerstein</dc:creator>
		<pubDate>Thu, 05 Jun 2008 12:13:46 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/2008/06/01/reusable-plsql/#comment-1395</guid>
		<description>Hmmmm. Well it sure worked that time; here I thought the posts needed to be approved! OK, I will repeat my posting from before; not sure what happened to it.

I think that the PL/SQL community is a very interesting one. Most of us are very heads-down focused on getting our jobs done, and pay very little attention to the bigger world &quot;out there&quot; of software development - whether it be PL/SQL-related utilities or even less likely non-PL/SQL initiatives like TDD (test driven development). There is also very little experience with or (perhaps from a management perspective) trust of third party free software. 

Clearly, we SHOULD all be building our apps based on existing libraries. Just as clearly, it is going to be a very difficult thing to achieve. 

Here are some free utilities and source code sets that I have made available:

Quest Error Manager - general error management framework. www.ToadWorld.com Downloads

Quest CodeGen Utility - general design pattern factory, with an emphasis on table API generation. www.ToadWorld.com Downloads

PL/Vision - library of 1000 reusable procedures and functions, but it is quite old at this point and not maintained. www.quest-pipelines.com

PL/SQL Obsession - my online portal for PL/SQL resources. Visit the &quot;Trainings, Seminars...&quot; page and download demo.zip, a set of 2000 scripts that are companions to my training materials.</description>
		<content:encoded><![CDATA[<p>Hmmmm. Well it sure worked that time; here I thought the posts needed to be approved! OK, I will repeat my posting from before; not sure what happened to it.</p>
<p>I think that the PL/SQL community is a very interesting one. Most of us are very heads-down focused on getting our jobs done, and pay very little attention to the bigger world &#8220;out there&#8221; of software development &#8211; whether it be PL/SQL-related utilities or even less likely non-PL/SQL initiatives like TDD (test driven development). There is also very little experience with or (perhaps from a management perspective) trust of third party free software. </p>
<p>Clearly, we SHOULD all be building our apps based on existing libraries. Just as clearly, it is going to be a very difficult thing to achieve. </p>
<p>Here are some free utilities and source code sets that I have made available:</p>
<p>Quest Error Manager &#8211; general error management framework. <a href="http://www.ToadWorld.com" rel="nofollow">http://www.ToadWorld.com</a> Downloads</p>
<p>Quest CodeGen Utility &#8211; general design pattern factory, with an emphasis on table API generation. <a href="http://www.ToadWorld.com" rel="nofollow">http://www.ToadWorld.com</a> Downloads</p>
<p>PL/Vision &#8211; library of 1000 reusable procedures and functions, but it is quite old at this point and not maintained. <a href="http://www.quest-pipelines.com" rel="nofollow">http://www.quest-pipelines.com</a></p>
<p>PL/SQL Obsession &#8211; my online portal for PL/SQL resources. Visit the &#8220;Trainings, Seminars&#8230;&#8221; page and download demo.zip, a set of 2000 scripts that are companions to my training materials.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
