<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEEMQXc8fip7ImA9WxNVEkQ.&quot;"><id>tag:blogger.com,1999:blog-21169145</id><updated>2009-10-23T13:18:00.976+02:00</updated><title>Jornica</title><subtitle type="html">He's a nice guy but doesn't get paid for it</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jornica.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><link rel="self" href="http://feeds.feedburner.com/jornica" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;AkQHRn4zeyp7ImA9WxVQFk0.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-895837007119156970</id><published>2009-02-02T21:53:00.002+01:00</published><updated>2009-02-02T21:58:57.083+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-02T21:58:57.083+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>The EMP mindmap</title><content type="html">&lt;p&gt;By accident, I stumbled upon a &lt;a href="http://code.google.com/p/js-mindmap/"&gt;Java script library&lt;/a&gt; for generating &lt;a href="http://en.wikipedia.org/wiki/Mind_map"&gt;mind maps&lt;/a&gt;. But instead of having a  static diagram, this Java script enabled one is dynamic, you can move nodes, you can zoom in or out to another level of nodes. A very nice graphical way of presenting hierarchical data. For example, who's managing who in Oracle's &lt;code&gt;EMP&lt;/code&gt; table as shown below. Come on, grab your mouse and start moving and clicking, it's alive!&lt;/p&gt;&lt;iframe src="http://apex.oracle.com/pls/otn/f?p=jsexamples:mindmap"  marginheight="0px" marginwidth="0px" title="Mindmap" frameborder="0" height="600" width="900"&gt;&lt;/iframe&gt;&lt;p&gt;Here's the recipe to build such an application.&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Start with downloading the source of the Google code project &lt;a href="http://code.google.com/p/js-mindmap/"&gt;js-mindmap&lt;/a&gt;. In the sources you will several Java script libraries, and an example file &lt;code&gt;js-mindmap.html&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;In APEX upload the Java script libraries add &lt;code&gt;&lt;javascript&gt;&lt;/code&gt;references from the header section to these libraries.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Add a PL/SQL region, which generates the hierarchy and will be converted in a diagram:&lt;/p&gt;&lt;pre&gt;&amp;lt;canvas id="cv"&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;&amp;lt;div id="js-mindmap"&amp;gt;&lt;br /&gt;  &amp;lt;a&amp;gt;KING&amp;lt;/a&amp;gt;&lt;br /&gt;  &amp;lt;ul&amp;gt;&lt;br /&gt;  &amp;lt;li&amp;gt;BLAKE&lt;br /&gt;  &amp;lt;ul&amp;gt;&lt;br /&gt;   &amp;lt;li&amp;gt;ALLEN&amp;lt;/li&amp;gt;&lt;br /&gt;   ...&lt;br /&gt;   &amp;lt;li&amp;gt;JAMES&amp;lt;/li&amp;gt;&lt;br /&gt;  &amp;lt;/ul&amp;gt;&lt;br /&gt;  ...&lt;br /&gt; &amp;lt;/ul&amp;gt;&lt;br /&gt; &amp;lt;/li&amp;gt; &lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;p&gt;For example, the &lt;a href="http://jornica.googlepages.com/show_emp_tree.zip"&gt;function&lt;/a&gt; &lt;code&gt;show_emp_tree&lt;/code&gt; returns the html code for the &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; element.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Note that when you replace the &lt;code&gt;EMP&lt;/code&gt; table by &lt;code&gt;OEHR_EMPLOYEES&lt;/code&gt; table the animation will become very slow due to the increase of nodes and links. Also the js-mindmap project is still in development. But anyway it's fun!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-895837007119156970?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=qocNdRMjiiU:OJe1uDl_rDk:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=qocNdRMjiiU:OJe1uDl_rDk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=qocNdRMjiiU:OJe1uDl_rDk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=qocNdRMjiiU:OJe1uDl_rDk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=qocNdRMjiiU:OJe1uDl_rDk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/895837007119156970/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=895837007119156970" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/895837007119156970?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/895837007119156970?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/qocNdRMjiiU/emp-mindmap.html" title="The EMP mindmap" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://jornica.blogspot.com/2009/02/emp-mindmap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcHR3wzcSp7ImA9WxdSEk8.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-6006926360754898703</id><published>2008-05-18T22:59:00.002+02:00</published><updated>2008-05-19T20:50:36.289+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-19T20:50:36.289+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="PL/SQL" /><title>To b:\ or not to B:\</title><content type="html">&lt;p&gt;Recently, I ran into a small issue with Java permissions. Starting point is the &lt;a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:439619916584" target="_blank"&gt;DirList&lt;/a&gt; Java procedure to list the content of an OS directory. Here is the code to get started (executed as &lt;code&gt;SCOTT&lt;/code&gt;):&lt;/p&gt;&lt;pre&gt;CREATE global TEMPORARY TABLE DIR_LIST ( filename VARCHAR2(255) ) ON&lt;br /&gt; COMMIT&lt;br /&gt;  DELETE rows&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "DirList"&lt;br /&gt;AS&lt;br /&gt; import java.io.*;&lt;br /&gt; import java.sql.*;&lt;br /&gt; public class DirList { &lt;br /&gt;  public static void getList(String directory) throws SQLException { &lt;br /&gt;    File path = NEW File( directory );&lt;br /&gt;    String[]&lt;br /&gt;    list = path.list();&lt;br /&gt;    String element;&lt;br /&gt;    for(INT i = 0; i &lt; list.length;  i++) { &lt;br /&gt;      element = list[i];&lt;br /&gt;      #sql { INSERT INTO DIR_LIST (FILENAME) VALUES (:element) };&lt;br /&gt;    } &lt;br /&gt;  } &lt;br /&gt; }&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE PROCEDURE get_dir_list ( p_directory IN VARCHAR2 ) &lt;br /&gt;  AS language java name 'DirList.getList( java.lang.String )'; &lt;br /&gt;/&lt;/pre&gt;&lt;p&gt;Don't grant the role &lt;code&gt;JAVAUSERPRIV&lt;/code&gt; but use a more granular option. Grant read permission to &lt;code&gt;SCOTT&lt;/code&gt; on the &lt;code&gt;d:&lt;/code&gt; drive:&lt;/p&gt;&lt;pre&gt;EXECUTE dbms_java.grant_permission( 'SCOTT', 'java.io.FilePermission','d:\','read' );&lt;/pre&gt;&lt;p&gt;Everything is in place now, time to run the procedure:&lt;/p&gt;&lt;pre&gt;EXECUTE get_dir_list('D:\');&lt;br /&gt;ORA-29532: Java call terminated by uncaught Java exception: java.security.AccessControlException: &lt;br /&gt;the Permission (java.io.FilePermission D:\ read) &lt;br /&gt;has not been granted by dbms_java.grant_permission to SchemaProtectionDomain(SCOTT|PolicyTableProxy(SCOTT))&lt;br /&gt;ORA-06512: at "SCOTT.GET_DIR_LIST", line 0&lt;br /&gt;ORA-06512: at line 2&lt;/pre&gt;&lt;p&gt;An error occurred, perhaps the directory did not exists? Executing a &lt;code&gt;dir D:\&lt;/code&gt; at the command prompt on the database server lists the files. The command prompt is not case sensitive, executing a &lt;code&gt;dir d:\&lt;/code&gt; returns the same listing. Perhaps  but &lt;code&gt;DBMS_JAVA.GRANT_PERMISSION&lt;/code&gt; is case sensitive?&lt;/p&gt;&lt;pre&gt;EXECUTE get_dir_list( 'd:\' );&lt;br /&gt;PL/SQL procedure successfully completed&lt;br /&gt;&lt;br /&gt;SELECT * FROM DIR_LIST&lt;br /&gt;/&lt;br /&gt;FILENAME&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;oracle&lt;br /&gt;RECYCLER&lt;br /&gt;System Volume Information&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-6006926360754898703?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=MJmQ-i-yGd8:5q8JWhIZoLc:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=MJmQ-i-yGd8:5q8JWhIZoLc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=MJmQ-i-yGd8:5q8JWhIZoLc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=MJmQ-i-yGd8:5q8JWhIZoLc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=MJmQ-i-yGd8:5q8JWhIZoLc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/6006926360754898703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=6006926360754898703" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/6006926360754898703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/6006926360754898703?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/MJmQ-i-yGd8/to-b-or-not-to-b.html" title="To b:\ or not to B:\" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2008/05/to-b-or-not-to-b.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAHQnY7fyp7ImA9WxZXE08.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-456654962478829615</id><published>2008-03-01T00:16:00.001+01:00</published><updated>2008-03-01T00:28:53.807+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-01T00:28:53.807+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XE" /><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>APEX 3.1 On XE</title><content type="html">&lt;p&gt;On 29 Februari 2008, Oracle released Application Express 3.1 .  The page &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.1_and_xe.html" target="_blank"&gt;Oracle Database XE and Application Express 3.1&lt;/a&gt; provides upgrade instructions .&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_yk_QuH_zS3Y/R8iSnxiPybI/AAAAAAAAAE4/WwL03WKs5_Y/s1600-h/apex31onxe.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_yk_QuH_zS3Y/R8iSnxiPybI/AAAAAAAAAE4/WwL03WKs5_Y/s320/apex31onxe.jpg" alt="" id="BLOGGER_PHOTO_ID_5172545384044546482" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-456654962478829615?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=GUfqgqoUu4M:dxQ0Rp9TSs4:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=GUfqgqoUu4M:dxQ0Rp9TSs4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=GUfqgqoUu4M:dxQ0Rp9TSs4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=GUfqgqoUu4M:dxQ0Rp9TSs4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=GUfqgqoUu4M:dxQ0Rp9TSs4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/456654962478829615/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=456654962478829615" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/456654962478829615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/456654962478829615?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/GUfqgqoUu4M/apex-31-on-xe.html" title="APEX 3.1 On XE" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_yk_QuH_zS3Y/R8iSnxiPybI/AAAAAAAAAE4/WwL03WKs5_Y/s72-c/apex31onxe.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://jornica.blogspot.com/2008/03/apex-31-on-xe.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYNR3o7cSp7ImA9WxZXEUk.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-7739899025157181657</id><published>2008-02-13T20:55:00.006+01:00</published><updated>2008-02-27T22:03:16.409+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-27T22:03:16.409+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>APEX_GLOBAL_ARRAYS</title><content type="html">&lt;p&gt;When you are working with global package arrays (&lt;a href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b32258/api.htm#CHDICJDA%20"&gt;&lt;code&gt;apex_application.g_f01&lt;/code&gt; ... &lt;code&gt;apex_application.g_f50&lt;/code&gt;&lt;/a&gt;) in Oracle Application Express (APEX), the following package procedure &lt;code&gt;apex_global_arrays&lt;/code&gt; can help in reducing development time especially time spent in the bugs and features department.&lt;/p&gt;&lt;pre&gt;PACKAGE apex_global_arrays&lt;br /&gt;IS&lt;br /&gt;PROCEDURE print(maxlength  NUMBER DEFAULT 20);&lt;br /&gt;END;&lt;/pre&gt;&lt;p&gt;The procedure &lt;code&gt;print&lt;/code&gt; prints a HTML table with the contents of the arrays only if the page is run in debug mode. The parameter &lt;code&gt;maxlength&lt;/code&gt; truncates the value of each table cell at the given number. You can call the procedure in a separate &lt;code&gt;On Submit&lt;/code&gt; application process.  In this way the table is rendered even when succeeding &lt;code&gt;On Submit&lt;/code&gt; processes fail. Define once, execute  everywhere. And of course,  you can call it in &lt;code&gt;&lt;/code&gt;page process as well.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A picture says more than a thousand words. Below is an example of an updateable report based on the &lt;code&gt;emp&lt;/code&gt; table.&lt;/p&gt;&lt;img style="border-width: 0px;" alt="Updateable report on EMP table" src="http://lh6.google.com/jornica/R7NLIysr1-I/AAAAAAAAAEo/5-eEx0n7K5I/apex_global_arrays19" border="0" height="339" width="640" /&gt;&lt;br /&gt;&lt;p&gt;After pressing submit, the following output is shown. Compare the &lt;code&gt;g_f01&lt;/code&gt; array with the checkboxes above. The &lt;code&gt;g_f01&lt;/code&gt; array is not sparse like the &lt;code&gt;g_f08&lt;/code&gt; (commission) array.  Also, when an array value does not exists, no table cell is printed, i.e. &lt;code&gt;g_f05(9)&lt;/code&gt;; King does not have a manager.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img alt="HMTL table generated by apex_global_arrays.print" src="http://lh5.google.com/jornica/R7NLJisr1_I/AAAAAAAAAEw/8vxoEm28r20/apex_global_arrays211" border="0" height="248" width="640" /&gt;&lt;p&gt;The source can be found &lt;a href="http://jornica.googlepages.com/apex_global_arrays.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Notes&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Due to the name change of HTMLDB into APEX the public synonyms &lt;code&gt;apex_application&lt;/code&gt; and &lt;code&gt;htmldb_application&lt;/code&gt; point both to the &lt;code&gt;wwv_flow&lt;/code&gt; package where the associative arrays are declared. The global package arrays are also known as referencing arrays in APEX documentation or associative arrays in the PL/SQL language.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;On &lt;a href="http://apex.oracle.com/"&gt;apex.oracle.com&lt;/a&gt; you have to enter the debug mode after the page is submitted in order to render the table. On Oracle XE, you  have to enter debug mode before submitting the page.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;You can install APEX_GLOBAL_ARRAYS in the parsing schema  or in a separate schema. You can find the parsing schema of your application on application definition page. When you choose for a separate schema you have to grant execute right to the parsing schema and create a (public) synonym for APEX_GLOBAL_ARRAYS.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-7739899025157181657?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3SYgyyOcs70:Op0sn1oxPRE:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3SYgyyOcs70:Op0sn1oxPRE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3SYgyyOcs70:Op0sn1oxPRE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3SYgyyOcs70:Op0sn1oxPRE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3SYgyyOcs70:Op0sn1oxPRE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/7739899025157181657/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=7739899025157181657" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/7739899025157181657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/7739899025157181657?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/3SYgyyOcs70/apexglobalarrays.html" title="APEX_GLOBAL_ARRAYS" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://jornica.blogspot.com/2008/02/apexglobalarrays.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4FRHg9fCp7ImA9WxZSFEk.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-8651306454413861323</id><published>2008-01-27T16:15:00.001+01:00</published><updated>2008-01-27T16:15:15.664+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-27T16:15:15.664+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RuleGen" /><title>Introducing RuleGen</title><content type="html">&lt;p&gt;I've been working with &lt;a href="http://www.oracle.com/technology/products/headstart/index.html" target="_blank"&gt;CDM Ruleframe&lt;/a&gt; for a few years now. Recently I've attended a presentation about another framework focusing on business rules called &lt;a href="http://www.rulegen.com" target="_blank"&gt;RuleGen&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;RuleGen is a framework written in PL/SQL that generates&amp;nbsp; code to maintain data integrity constraints. Right now RuleGen implements table constraints, i.e. at most one president allowed in EMP,&amp;nbsp; and database constraints, i.e. every department has at least two employees. Enforcing a data integrity constraint is done in two steps. The first step is about administering the affected rows of a transaction (inserts, updates and deletes). The second step is validating the constraint against the affected rows. If the constraint is violated an exception is raised.&amp;nbsp; You can also say the first step is about WHEN&amp;nbsp; the constraint is validated and the second step is HOW the constraint is validated. &lt;/p&gt; &lt;p&gt;There are switches to influence the runtime behavior of RuleGen like the execution model: stop on the first constraint violation or continue after the first constraint violation in order to collect a list of constraint violations (like the message stack in CDM Ruleframe). It is also possible to defer checking (in contrary to immediate checking).&amp;nbsp; &lt;/p&gt; &lt;p&gt;A difference between CDM Ruleframe and RuleGen is the relationship with Oracle Designer. RuleGen is not integrated with Oracle Designer where CDM Ruleframe is. The definition (remember HOW and WHEN) of data integrity constraints is either done with SQL*Plus or with a small APEX application. Another&amp;nbsp; difference between RuleGen and CDM Ruleframe is there is no PL/SQL coding required with RuleGen. The definition of data integrity constraints is done in SQL queries completely.&lt;/p&gt; &lt;p&gt;In my opinion, the functionality of RuleGen looks very promising. Keep an eye on it!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-8651306454413861323?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=I0rTGlnwKGc:yxEpVLxlKIo:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=I0rTGlnwKGc:yxEpVLxlKIo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=I0rTGlnwKGc:yxEpVLxlKIo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=I0rTGlnwKGc:yxEpVLxlKIo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=I0rTGlnwKGc:yxEpVLxlKIo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/8651306454413861323/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=8651306454413861323" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8651306454413861323?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8651306454413861323?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/I0rTGlnwKGc/introducing-rulegen.html" title="Introducing RuleGen" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2008/01/introducing-rulegen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04GRXgzeyp7ImA9WxZTEE0.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-1871841616758262010</id><published>2008-01-10T23:58:00.001+01:00</published><updated>2008-01-10T23:58:44.683+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-10T23:58:44.683+01:00</app:edited><title>Tagged!</title><content type="html">&lt;p&gt;&amp;nbsp;&lt;a href="http://garethroberts.blogspot.com/" target="_blank"&gt;Gareth Roberts&lt;/a&gt; tagged me. Thanks for the &lt;a href="http://oracleappslab.com/2008/01/07/orablog-tag/" target="_blank"&gt;invitation&lt;/a&gt;. And here are 8 things you did not know about me. &lt;/p&gt; &lt;ol&gt; &lt;li&gt;My nickname Jornica is derived from &lt;font color="#ff8000"&gt;Jor&lt;/font&gt;rit &lt;font color="#ff8000"&gt;Ni&lt;/font&gt;jssen. However five characters is often not enough for an username. By adding some extra random chosen characters &lt;font color="#ff8000"&gt;ca &lt;/font&gt;&lt;font color="#000000"&gt;it is long enough...&lt;/font&gt; &lt;li&gt;I maintain another non Oracle related blog as well: &lt;a href="http://jornica-etc.blogspot.com/" target="_blank"&gt;Etc.&lt;/a&gt; &lt;li&gt;Keywords of my favorite holidays: sea, sun and hills. Did I mention &lt;a href="http://members.tele2.nl/jornica/sicilie/sicilie.html" target="_blank"&gt;volcanoes&lt;/a&gt;? &lt;li&gt;My roots are in the southern part of the Netherlands; I like music from artists like &lt;a href="http://www.jansebagge.nl/" target="_blank"&gt;De Janse Bagge Bend&lt;/a&gt;, &lt;a href="http://www.g-reinders.nl/" target="_blank"&gt;Gé Reinders&lt;/a&gt; and &lt;a href="http://www.rowwenheze.nl/" target="_blank"&gt;Rowwen Hèze&lt;/a&gt;. &lt;li&gt;I like to watch fire engine movies on You Tube with my son.  &lt;li&gt;My family believes I'm a good cook.  &lt;li&gt;My favorite Linux distribution is homemade &lt;a href="http://www.linuxfromscratch.org/" target="_blank"&gt;Linux From Scratch&lt;/a&gt;. It's about building your own Linux system from source code.  &lt;li&gt;I use &lt;a href="http://lifehacker.com/" target="_blank"&gt;Lifehacker&lt;/a&gt; as a source for new software: Windows tools and utilities.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;And now, who's next (sorry 3 out of 8).&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="http://bar-solutions.com" href="http://bar-solutions.com" target="_blank"&gt;Patch&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://www.ome-b.nl" href="http://www.ome-b.nl"&gt;Ome-b&lt;/a&gt; (dutch)&lt;/li&gt; &lt;li&gt;&lt;a href="http://pbarut.blogspot.com/" target="_blank"&gt;Software Engineer Thoughts&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-1871841616758262010?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=_iMxAV1KV0Y:Z6--cMoqom0:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=_iMxAV1KV0Y:Z6--cMoqom0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=_iMxAV1KV0Y:Z6--cMoqom0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=_iMxAV1KV0Y:Z6--cMoqom0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=_iMxAV1KV0Y:Z6--cMoqom0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/1871841616758262010/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=1871841616758262010" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/1871841616758262010?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/1871841616758262010?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/_iMxAV1KV0Y/tagged.html" title="Tagged!" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2008/01/tagged.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcEQ3c7fCp7ImA9WB9UFUU.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-2180524784196873053</id><published>2007-12-13T22:08:00.000+01:00</published><updated>2007-12-13T23:13:22.904+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-13T23:13:22.904+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Chart API" /><title>Integrating  the Google Chart API  in APEX</title><content type="html">&lt;p&gt;A few days ago, Google released the &lt;a href="http://code.google.com/apis/chart/%20"&gt;Google Chart API&lt;/a&gt;. By calling a special crafted URL Google returns a image containing a chart derived from the parameters included in the URL. For instance&lt;/p&gt;&lt;pre&gt;http://chart.apis.google.com/chart?cht=p3&amp;amp;chd=t:3,5,6,0&amp;amp;chs=200x100&amp;amp;chl=10|20|30|40&lt;br /&gt;&amp;amp;chco=ff0000,00ff00,0000ff,000000&lt;/pre&gt;&lt;p&gt;will give the image shown left. At the right the Flash equivalent generated by APEX is shown.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_yk_QuH_zS3Y/R2GjzYWwWqI/AAAAAAAAAEU/PO5Z_u9dKZ0/s1600-h/googlechartexample.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_yk_QuH_zS3Y/R2GjzYWwWqI/AAAAAAAAAEU/PO5Z_u9dKZ0/s400/googlechartexample.jpg" alt="" id="BLOGGER_PHOTO_ID_5143572352540367522" border="0" /&gt;&lt;/a&gt;&lt;p&gt;To include this dynamic Google chart based on a query on  a page, define a PL/SQL dynamic content region with the following PL/SQL source:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;DECLARE&lt;br /&gt;l_url VARCHAR2(2000) := 'http://chart.apis.google.com/chart?cht=p3&amp;amp;chs=200x100&amp;amp;chco=ff0000,00ff00,0000ff,000000';&lt;br /&gt;l_chd VARCHAR2(2000);&lt;br /&gt;l_chl VARCHAR2(2000);&lt;br /&gt;BEGIN&lt;br /&gt;FOR rec IN&lt;br /&gt;(SELECT d.deptno LABEL,&lt;br /&gt;   COUNT(e.empno) VALUE&lt;br /&gt; FROM dept d,&lt;br /&gt;   emp e&lt;br /&gt; WHERE d.deptno = e.deptno(+)&lt;br /&gt; GROUP BY d.deptno)&lt;br /&gt;LOOP&lt;br /&gt;  l_chd := l_chd || ',' || rec.VALUE;&lt;br /&gt;  l_chl := l_chl || '|' || rec.LABEL;&lt;br /&gt;END LOOP;&lt;br /&gt;l_url := l_url || 'chd=t:' || SUBSTR(l_chd,   2) || '&amp;amp;chl=' || SUBSTR(l_chl,   2);&lt;br /&gt;htp.p('&amp;lt;img src="' || l_url || '"/&amp;gt;');&lt;br /&gt;END;&lt;/pre&gt;&lt;p&gt;If you do not want to use the built-in Flash chart functionality, the Google Chart API is a simple alternative.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-2180524784196873053?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Nm7FHBe6Efs:TwUofbWbxlQ:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Nm7FHBe6Efs:TwUofbWbxlQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Nm7FHBe6Efs:TwUofbWbxlQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Nm7FHBe6Efs:TwUofbWbxlQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Nm7FHBe6Efs:TwUofbWbxlQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/2180524784196873053/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=2180524784196873053" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/2180524784196873053?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/2180524784196873053?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/Nm7FHBe6Efs/integrating-google-chart-api-in-apex.html" title="Integrating  the Google Chart API  in APEX" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_yk_QuH_zS3Y/R2GjzYWwWqI/AAAAAAAAAEU/PO5Z_u9dKZ0/s72-c/googlechartexample.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/12/integrating-google-chart-api-in-apex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8MR3wyeyp7ImA9WB9QFkQ.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-285407596808942455</id><published>2007-10-29T22:24:00.000+01:00</published><updated>2007-10-29T23:28:06.293+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-29T23:28:06.293+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>Mail from Application Express  with Access Control  Enabled</title><content type="html">&lt;p&gt;One of the post installation task after installing Oracle 11 is the creation of Access Control List (ACL). Oracle provides a few &lt;a href="http://download.oracle.com/docs/cd/B28359_01/install.111/b32002/post_inst_task.htm#CHDCFCFA"&gt;scripts&lt;/a&gt; in order to allow &lt;code&gt;flows_030000&lt;/code&gt; to connect any host. What if you do not allow the database to connect &lt;b&gt;any&lt;/b&gt; host but only &lt;span style="font-weight: bold;"&gt;one&lt;/span&gt; host. For instance, you want to send &lt;a href="http://jornica.blogspot.com/2007/01/mail-from-application-express.html"&gt;mail from Application Express&lt;/a&gt; (APEX) ?&lt;/p&gt;&lt;p&gt;First, set up the email settings  in the administrative interface (Home&gt;Manage Service&gt;Instance Settings). Secondly, run the following statements as&lt;br /&gt;&lt;code&gt;system&lt;/code&gt;.&lt;/p&gt;&lt;pre&gt;-- Create an access control list&lt;br /&gt;BEGIN&lt;br /&gt;  dbms_network_acl_admin.create_acl(acl =&gt; 'apexmail.xml',   &lt;br /&gt;    description =&gt; 'Mail from Apex',   principal =&gt; 'FLOWS_030000',&lt;br /&gt;    is_grant =&gt; TRUE,   privilege =&gt; 'connect',   start_date =&gt; NULL,&lt;br /&gt;    end_date =&gt; NULL);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;-- Assign the list to your SMTP host, i.e. smtp.yyy.xx&lt;br /&gt;BEGIN&lt;br /&gt;  dbms_network_acl_admin.assign_acl(acl =&gt; 'apexmail.xml',&lt;br /&gt;    host =&gt; 'smtp.yyy.xx',   lower_port =&gt; 25,   upper_port =&gt; 25);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;-- Uncomment to remove access control list&lt;br /&gt;--BEGIN&lt;br /&gt;--  dbms_network_acl_admin.drop_acl(acl =&gt; 'apexmail.xml');&lt;br /&gt;--END;&lt;br /&gt;--/&lt;br /&gt;&lt;br /&gt;-- Please, do commit work.&lt;br /&gt;COMMIT;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can find more information about the usage of &lt;code&gt;dbms_network_acl_admin&lt;/code&gt; in the &lt;a href="http://download.oracle.com/docs/cd/B28359_01/network.111/b28531/authorization.htm#insertedID11"&gt;Database Security Guide&lt;/a&gt;. For all the remaining network services you can apply the same technique.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-285407596808942455?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Cdo23Ui-l9o:OgicbikvASs:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Cdo23Ui-l9o:OgicbikvASs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Cdo23Ui-l9o:OgicbikvASs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Cdo23Ui-l9o:OgicbikvASs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Cdo23Ui-l9o:OgicbikvASs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/285407596808942455/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=285407596808942455" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/285407596808942455?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/285407596808942455?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/Cdo23Ui-l9o/mail-from-application-express-with.html" title="Mail from Application Express  with Access Control  Enabled" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/10/mail-from-application-express-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIDQH09eSp7ImA9WB9QFk0.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-1140339257654929660</id><published>2007-10-28T21:56:00.000+01:00</published><updated>2007-10-28T22:39:31.361+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-28T22:39:31.361+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>Where is the Scott schema in APEX?</title><content type="html">&lt;p&gt;I decided to install Oracle 11g. And with Oracle 11g Application Express (APEX)is installed by default. Before importing an application based on the &lt;code&gt;emp&lt;/code&gt; table, I decided to create a workspace based on the existing schema &lt;code&gt;Scott&lt;/code&gt;. However the administrative interface did not allow me to select &lt;code&gt;Scott&lt;/code&gt;. By not using the LOV but typing the schema name, APEX gave the following error: &lt;code&gt;Schema is reserved or restricted&lt;/code&gt;. What is going on?&lt;/p&gt;&lt;p&gt;APEX uses the following query to populate the list of  values:&lt;/p&gt;&lt;pre&gt;SELECT name n,&lt;br /&gt; name r&lt;br /&gt;FROM sys.user$ u&lt;br /&gt;WHERE type# = 1&lt;br /&gt;AND name &lt;&gt; 'FLOWS_030000'&lt;br /&gt;AND name NOT IN('HTMLDB_PUBLIC_USER',   'PUBLIC_USER',   'FLOWS_FILES',&lt;br /&gt;               'SCHEDULER',   'PEOPLE',   'APEX_PUBLIC_USER')&lt;br /&gt;AND name NOT IN&lt;br /&gt;(SELECT SCHEMA&lt;br /&gt; FROM wwv_flow_restricted_schemas&lt;br /&gt; WHERE NOT EXISTS&lt;br /&gt;  (SELECT 1&lt;br /&gt;   FROM wwv_flow_rschema_exceptions&lt;br /&gt;   WHERE schema_id =&lt;br /&gt;    (SELECT id&lt;br /&gt;     FROM wwv_flow_restricted_schemas&lt;br /&gt;     WHERE SCHEMA = u.name)&lt;br /&gt;  )&lt;br /&gt;)&lt;br /&gt;ORDER BY 1&lt;br /&gt;/&lt;/pre&gt;&lt;p&gt;Beside some hard coded schema names, there are two &lt;code&gt;flows_030000&lt;/code&gt; tables used in the query, &lt;code&gt;wwv_flow_restricted_schemas&lt;/code&gt; and &lt;code&gt;wwv_flows_rschema_exception&lt;/code&gt;.&lt;/p&gt; &lt;pre&gt;SQL&gt;SELECT * FROM flows_030000.wwv_flow_restricted_schemas t&lt;br /&gt;/&lt;br /&gt;ID SCHEMA CREATED_BY CREATED_ON       LAST_UPDATED_BY LAST_UPDATED_ON&lt;br /&gt;-- ------ ---------- ---------------- --------------- ---------------&lt;br /&gt;...&lt;br /&gt;38 SCOTT  SYS        3-8-2007 2:12:53&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;wwv_flows_rschema_exception &lt;/code&gt;contains no rows.&lt;/p&gt;&lt;p&gt;Both tables are used by the package &lt;code&gt;htmldb_site_admin_privs&lt;/code&gt;, which serves as an interface packages. Now remove the restriction on &lt;code&gt;Scott&lt;/code&gt; by executing the following statements (as &lt;code&gt;Sys&lt;/code&gt;).&lt;/p&gt;&lt;pre&gt;SQL&gt;exec flows_030000.htmldb_site_admin_privs.unrestrict_schema(p_schema =&gt; 'SCOTT');&lt;br /&gt;SQL&gt;commit;&lt;/pre&gt;And of course, this topic is covered by the &lt;a href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b32258/adm_wrkspc.htm#sthref3393"&gt;Application Express User's Guide&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-1140339257654929660?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=imgfV06t2qo:vXOcJxrNR4o:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=imgfV06t2qo:vXOcJxrNR4o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=imgfV06t2qo:vXOcJxrNR4o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=imgfV06t2qo:vXOcJxrNR4o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=imgfV06t2qo:vXOcJxrNR4o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/1140339257654929660/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=1140339257654929660" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/1140339257654929660?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/1140339257654929660?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/imgfV06t2qo/where-is-scott-schema-in-apex.html" title="Where is the Scott schema in APEX?" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/10/where-is-scott-schema-in-apex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04FQnszcCp7ImA9WB5VEE0.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-8818744150574014025</id><published>2007-07-13T23:59:00.001+02:00</published><updated>2007-08-01T22:58:33.588+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-01T22:58:33.588+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GIS" /><category scheme="http://www.blogger.com/atom/ns#" term="XE" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Maps API" /><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>Google Maps in APEX on XE with spatial data</title><content type="html">&lt;p&gt;A picture says more than thousand words is well known saying, well let's have a look.&lt;/p&gt;&lt;iframe src="http://apex.oracle.com/pls/otn/f?p=oramaps" marginheight="0" marginwidth="0" title="satellite photo - GoogleMaps" frameborder="0" height="380" scrolling="no" width="480"&gt;&lt;/iframe&gt;&lt;p&gt;Choose your favorite country from the list, and the Google Map will pan to your country. As a bonus the selected country is colored red, the country shape is based on spatial data. You can zoom and move the map, or change the map type.&lt;/p&gt; &lt;p&gt;What do you need to build this application: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;p&gt;An &lt;a title="Oracle Database 10g Express Edition" href="http://www.oracle.com/technology/products/database/xe/index.html" target="_blank"&gt;Oracle XE database&lt;/a&gt; or better. The good news is that XE already contains the &lt;code&gt;MDSYS&lt;/code&gt; schema full of spatial utilities. The bad news is that XE has no spatial data included. But ... &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;NAVTEQ provides &lt;a title="Oracle Spatial Partners' Downloads, Plug-ins &amp; Data" href="http://www.oracle.com/technology/products/spatial/htdocs/spatial_partners_downloads.html#navteq_sampledata" target="_blank"&gt;sample data&lt;/a&gt; for Geocoder. Download, import and use it.  &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Apex, included with XE.  &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;A &lt;a title="Google Maps API - Add Google Maps to Your Website" href="http:///" target="_blank"&gt;Google Maps&lt;/a&gt; API key.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And it is all free, as in beer.&lt;/p&gt; &lt;p&gt;Just a remark about using the term spatial. As you can read &lt;a title="Oracle Spatial &amp;amp; Oracle Locator: Location Features for Oracle Database 10g" href="http://www.oracle.com/technology/products/spatial/index.html" target="_blank"&gt;here&lt;/a&gt; XE does not have the Spatial option included nor does it include Oracle Locator with or without Oracle Mapviewer, but XE contains the &lt;code&gt;MDSYS&lt;/code&gt; schema and that is all we need.&lt;/p&gt;&lt;h3&gt;Include Google Maps&lt;/h3&gt;&lt;p&gt;Sign up for a Google Map API key &lt;a title="Google Maps API - Sign Up" href="http://www.google.com/apis/maps/signup.html" target="_blank"&gt;here&lt;/a&gt;. For XE use the following URL &lt;code&gt;&lt;a href="http://127.0.0.1:8080/"&gt;http://127.0.0.1:8080/&lt;/a&gt;&lt;/code&gt;. to sign up. Take a look at the sample page shown after generation of your key.&lt;/p&gt;&lt;p&gt;Now create in APEX a page (in a new or existing application) and navigate to the page attributes. &lt;/p&gt;&lt;p&gt;In the Display Attributes section set the cursor focus to Do not focus cursor. In the HTML Header section insert the following code, replace ... with your Google maps API key.&lt;/p&gt;&lt;pre&gt;&amp;lt;script src=http://maps.google.com/maps?file=api&amp;amp;amp;v=2&amp;key=...&lt;br /&gt;type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/pre&gt;&lt;p&gt;In the  HTML Body Header (section Header and Footer) insert the following code:&lt;/p&gt;&lt;pre&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;//&amp;lt;![CDATA[&lt;br /&gt;function load() {&lt;br /&gt;if (GBrowserIsCompatible()) {&lt;br /&gt;var map = new GMap2(document.getElementById("map"));&lt;br /&gt;map.setCenter(new GLatLng(37.4419, -122.1419), 13);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;//]]&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;p&gt;In the Page HTML Body attribute (section HTML Body attribute) insert the following code:&lt;/p&gt;&lt;pre&gt;onload="load()" onunload="Gunload()"&lt;/pre&gt;&lt;p&gt;Add a HTML Text region to the page with the following region source:&lt;/p&gt;&lt;pre&gt;&amp;lt;div id="map" style="width: 500px; height: 300px"&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;p&gt;For Internet Explorer a small change of the page template is needed otherwise Internet Explorer stops responding. The first line of header (section Definition) should look like this: &lt;/p&gt;&lt;pre&gt;&amp;lt;html lang="&amp;BROWSER_LANGUAGE." xmlns:htmldb="http://htmldb.oracle.com" xmlns:v="urn:schemas-microsoft-com:vml"&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;Run the page and if everything is alright you will see a map of Palo Alto. This is the 'hello world' example of Google Maps. Note that it is required to issue the &lt;code&gt;SetCenter&lt;/code&gt; statement otherwise only a grey pane is shown on the place of the map. You can also add some bells and whistles: &lt;a title="Google Maps API Documentation" href="http://www.google.com/apis/maps/documentation/index.html#Adding_Controls_to_the_Map" target="_blank"&gt;map controls&lt;/a&gt; and &lt;a title="Google Maps API version 2  Reference" href="http://www.google.com/apis/maps/documentation/reference.html#GPolygon" target="_blank"&gt;polylgons&lt;/a&gt; (points connected by lines with a fill color as well). &lt;/p&gt;&lt;h3&gt;Prepare APEX &lt;/h3&gt;&lt;p&gt;Let us finish the web front end first before retrieving the geodata from the database. Modify the page created in the previous section.&lt;/p&gt;&lt;p&gt;Change the pagetype in PL/SQL (anonymous block). Insert the following in Region Source  (section Source):&lt;/p&gt;&lt;pre&gt;p_gis_data.draw_map(p_country=&amp;gt;:P1_COUNTRY);&lt;/pre&gt;&lt;p&gt;The package &lt;code&gt;p_gis_data&lt;/code&gt; is discussed later.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Add two items to the page: &lt;code&gt;P1_COUNTRY&lt;/code&gt; (select list with submit) with the following dynamic list of values query: &lt;/p&gt;&lt;pre&gt;SELECT initcap(country) display_value,&lt;br /&gt;country return_value&lt;br /&gt;FROM m_world&lt;br /&gt;ORDER BY 1&lt;/pre&gt;&lt;p&gt;And add a placeholder for the map  &lt;code&gt;P1_DIV&lt;/code&gt; (Display as text, does save state) with the following  value for Source value of expression (section Source):&lt;/p&gt; &lt;pre&gt;&amp;lt;div id="map" style="width: 500px; height: 300px"&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;p&gt;In order to initialize the Google Map add a before region process. This process sets the default value of the select list when there is no item selected.&lt;/p&gt;&lt;pre&gt;IF :P1_COUNTRY IS NULL&lt;br /&gt;THEN&lt;br /&gt;:P1_COUNTRY := 'Netherlands';&lt;br /&gt;END IF;&lt;/pre&gt;&lt;h3&gt;Load sample data&lt;/h3&gt; &lt;p&gt;Download the sample data and unzip. Create a separate user and tablespace for the sample data:&lt;/p&gt;&lt;pre&gt;SQL&amp;gt; CREATE TABLESPACE gis_data DATAFILE 'C:\ORACLEXE\ORADATA\XE\GIS_DATA.DBF' SIZE 600M ONLINE;&lt;br /&gt;SQL&amp;gt; CREATE USER gis_data IDENTIFIED BY gis_data DEFAULT TABLESPACE gis_data TEMPORARY TABLESPACE temp;&lt;br /&gt;SQL&amp;gt; GRANT CONNECT, RESOURCE TO gis_data;&lt;/pre&gt;&lt;p&gt;Only execute steps 1 and 2 from the README. You do not need to install Mapviewer. After some time all the data is loaded.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Retrieve spatial data&lt;/h3&gt;&lt;p&gt;It's time to retrieve spatial data from the database. Take a look at the &lt;code&gt;M_WORLD&lt;/code&gt; table, there is a column named &lt;code&gt;GEOMETRY&lt;/code&gt; with datatype &lt;code&gt;SDO_GEOMETRY&lt;/code&gt; which stores all the spatial data. The &lt;code&gt;GEOMETRY&lt;/code&gt; column stores the position (property &lt;code&gt;GEOMETRY.SDO_POINT&lt;/code&gt;), more or less the center, of a country and one of more polygons. A polygon consists of points connected by (straight) lines. Remember the Google polygons?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Our task is to retrieve all polygons from the &lt;code&gt;GEOMETRY&lt;/code&gt; column. Property &lt;code&gt;GEOMETRY.SDO_ELEM_INFO&lt;/code&gt; tells us how many polygons the property &lt;code&gt;GEOMETRY.SDO_ORDINATES&lt;/code&gt; stores and of which kind they are. The function &lt;code&gt;SDO_UTIL.GETNUMELEM&lt;/code&gt; retrieves the number of elements for a given geometry, in our case the number of polygons. The &lt;code&gt;SDO_UTIL.EXTRACT&lt;/code&gt; function extracts the &lt;em&gt;n&lt;/em&gt;th element from a geometry returning a geometry object as well. And the function &lt;code&gt;SDO_UTIL.GET_VERTICES&lt;/code&gt; retrieves all points of geometry.  Combining these two functions will result in a number of geometry objects, each object corresponds with one polygon.&lt;/p&gt;&lt;p&gt;We can retrieve this information in one SQL statement:&lt;/p&gt;&lt;pre&gt;SELECT country.geometry.sdo_point.x x,&lt;br /&gt;country.geometry.sdo_point.y y,&lt;br /&gt;country.element,&lt;br /&gt;CURSOR&lt;br /&gt;(SELECT x,&lt;br /&gt;y&lt;br /&gt;FROM TABLE(sdo_util.getvertices(sdo_util.EXTRACT(country.geometry, country.element)))&lt;br /&gt;ORDER BY id) area&lt;br /&gt;FROM&lt;br /&gt;(SELECT iv.*,&lt;br /&gt;LEVEL element&lt;br /&gt;FROM&lt;br /&gt;(SELECT *&lt;br /&gt;FROM m_world&lt;br /&gt;WHERE country = cp_name) iv&lt;br /&gt;CONNECT BY LEVEL &amp;lt;= sdo_util.getnumelem(geometry)) country&lt;br /&gt;/&lt;/pre&gt;&lt;p&gt;The inline view &lt;code&gt;iv&lt;/code&gt; selects one row from the  &lt;code&gt;M_WORLD&lt;/code&gt; table and for each element  of the corresponding geometry a copy of this row is generated. In the country select each element is stored in a cursor expression. The next thing is to write some PL/SQL code to generate javascript based on this query i.e. &lt;code&gt;&lt;a href="http://jornica.googlepages.com/p_gis_data.zip"&gt; p_gis_data&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;&lt;h3&gt;Further reading&lt;br /&gt;&lt;/h3&gt;The idea for this blog entry came after reading &lt;a href="http://www.orablogs.com/oragis/archives/001886.html"&gt;Creating Thematic Google Mapping Applications (for Business Intelligence) using Oracle Locator/Spatial and Application Express&lt;/a&gt; and &lt;a href="http://www.oracle.com/global/de/community/tipps/geo-1/index.html"&gt;Auf den Ort kommt es an: Geodaten in Application Express-Anwendungen nutzen&lt;/a&gt; (in german) and of course  &lt;a href="http://www.blogger.com/href=%22http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14255/toc.htm"&gt;Oracle Spatial User's Guide and Reference&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-8818744150574014025?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=vFvFWz7q7yI:ZQ-lR5qED88:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=vFvFWz7q7yI:ZQ-lR5qED88:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=vFvFWz7q7yI:ZQ-lR5qED88:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=vFvFWz7q7yI:ZQ-lR5qED88:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=vFvFWz7q7yI:ZQ-lR5qED88:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/8818744150574014025/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=8818744150574014025" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8818744150574014025?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8818744150574014025?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/vFvFWz7q7yI/google-maps-in-apex-on-xe-with-spatial.html" title="Google Maps in APEX on XE with spatial data" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/07/google-maps-in-apex-on-xe-with-spatial.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEARHs_eCp7ImA9WxZXE0U.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-4717543562941514336</id><published>2007-07-01T22:23:00.002+02:00</published><updated>2008-03-01T16:17:25.540+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-01T16:17:25.540+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XE" /><category scheme="http://www.blogger.com/atom/ns#" term="SQLDeveloper" /><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>APEX 3.0.1 on XE</title><content type="html">&lt;p style="border: 1px solid red; padding: 5px;"&gt;On 29 Februari 2008 Oracle released Application Express 3.1 . With this release you can upgrade the Application Express within Oracle XE to 3.1. For more information on this topic see &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.1_and_xe.html"&gt;Oracle Database XE and Application Express 3.1&lt;/a&gt; and &lt;a href="http://jornica.blogspot.com/2008/03/apex-31-on-xe.html"&gt;APEX 3.1 on XE &lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Oracle released Application Express 3.0.1 recently. With this release you can upgrade APEX within Oracle XE from 2.1 to 3.0.1 (see &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.0.1_and_xe.html"&gt;Oracle Database XE and Application Express 3.0.1&lt;/a&gt;). But how to upgrade when you already installed &lt;a href="http://jornica.blogspot.com/2007/03/apex-30-on-xe.html"&gt; APEX 3.0 on XE&lt;/a&gt;?&lt;/p&gt; &lt;p&gt;There is a patch available on Metalink to upgrade from APEX 3.0 to 3.0.1. According to the &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.0.1_readme.html"&gt;Patch Set Notes&lt;/a&gt; Oracle9i release 2 and higher support this patch if you have APEX 3.0.0.00.20 already installed (the Patch Set Notes also includes a list of fixed bugs). In order to download the patch from Metalink, you will need a support contract (which is not included with XE). &lt;/p&gt; &lt;p&gt;Another option is to remove APEX 3.0 completely. After the removal, XE has APEX 2.1. (still) installed and the next step is of course to install APEX 3.0.1. The big advantage of this option is you following the main route of upgrading XE/APEX as proposed by Oracle. However there are some things to keep in mind.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;As always start with making a backup of your database.&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;&lt;p&gt;Export all applications you would like to see again in APEX 3.0.1. If you remove APEX 3.0 completely, you also remove all applications stored  in the &lt;code&gt;FLOWS_030000&lt;/code&gt;(APEX 3.0) schema! Note that applications stored in the &lt;code&gt;FLOWS_020100&lt;/code&gt; schema will be migrated to &lt;code&gt;FLOWS_030000&lt;/code&gt; (APEX 3.0.1).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Make a backup of changed or added cascading style sheets (CSS), images and java scripts separately.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Run the &lt;code&gt;apex_3.0.1\apxremov.sql&lt;/code&gt; script (the script is the same for both versions).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Run the &lt;code&gt;apex_3.0.1\apxins.sql&lt;/code&gt; script. Check the installation log for errors.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Copy the &lt;code&gt;apex_3.0.1\images&lt;/code&gt; directory to the &lt;code&gt;/i/&lt;/code&gt;directory. Also copy the previous backed up CSS, images and java scripts to the &lt;code&gt;/i/&lt;/code&gt; directory.&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;&lt;p&gt;Import all applications  exported in the first step. Note that existing applications in APEX 2.1 are migrated to APEX 3.0.1 as part of the upgrade process.&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;&lt;p&gt;Time to make a backup again.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Have a look at the &lt;a href="http://jornica.blogspot.com/2007/05/apex-reports-and-sql-developer.html"&gt;APEX reports in SQL Developer&lt;/a&gt;, no errors any more.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-4717543562941514336?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3nArybRu-dU:AVVzMZk-Z40:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3nArybRu-dU:AVVzMZk-Z40:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3nArybRu-dU:AVVzMZk-Z40:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3nArybRu-dU:AVVzMZk-Z40:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3nArybRu-dU:AVVzMZk-Z40:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/4717543562941514336/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=4717543562941514336" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/4717543562941514336?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/4717543562941514336?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/3nArybRu-dU/apex-301-on-xe.html" title="APEX 3.0.1 on XE" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/07/apex-301-on-xe.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEAQ38-fCp7ImA9WB5WEkQ.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-5342406427896095952</id><published>2007-06-17T16:35:00.000+02:00</published><updated>2007-07-24T19:04:02.154+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-24T19:04:02.154+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Quest Code Tester  for Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="SQLDeveloper" /><title>Remote debugging Code Tester</title><content type="html">&lt;p&gt;&lt;a href="http://www.unit-test.com/"&gt;Quest Code Tester for Oracle&lt;/a&gt; (Code Tester) helps you with defining test cases, generating test harnesses and presenting the test results in a structured way. Code Tester does not provide any features to debug your code.  If you run into a red light situation when a test case fails, you have discover where the error is located. This means checking inputs and outcomes in order to exclude  incorrect setup and  incorrect initialization code. And of course checking your code, recompiling your (test) code and login again.&lt;/p&gt;&lt;p&gt;If this does not result into a green light, it is time to debug your code with a development IDE. As a result you have to transfer your test code into your development IDE. Wouldn't it be nice if you could enter debug mode seamlessly: when executing your test case the execution stops at a breakpoint and you can debug your code. The answer is: yes, you can.  With &lt;a href="http://www.oracle.com/technology/products/database/sql_developer/index.html"&gt;SQL Developer&lt;/a&gt; you can remote debug your code within a test run.&lt;/p&gt;&lt;p&gt;The linking pin between Code Tester and SQL Developer is the package &lt;code&gt;sys.dbms_debug_jdwp&lt;/code&gt; where jdwp stands for Java Debug Wire Protocol. This protocols needs a debugger process i.e. SQL Developer and a debuggee process i.e. Code Tester. The debugger listens for  requests from the debuggee i.e. PL/SQL package procedure calls to &lt;code&gt;connect_tcp&lt;/code&gt; and &lt;code&gt;disconnect&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Setting up the debuggee&lt;/span&gt;&lt;br /&gt;In Code Tester you have to modify the initialization section of your test case. Add the following code&lt;br /&gt;&lt;code&gt;dbms_debug_jdwp.connect_tcp(host =&gt;  '127.0.0.1', port =&gt; 4000);&lt;/code&gt;&lt;br /&gt;The first parameter is your IP address of the client where the Code Tester IDE runs (as seen from the database server you're connected to). Because I'm running Code Tester and Oracle XE on the same machine, I use  the local host address &lt;code&gt;127.0.0.1&lt;/code&gt;. The second parameter is the default port. An alternative for the hard coded IP address is &lt;code&gt;SYS_CONTEXT ('USERENV', 'IP_ADDRESS').&lt;/code&gt;&lt;/p&gt;&lt;p&gt;After the test case is executed, switch off remote debugging. Add the following code to the cleanup section:&lt;br /&gt;&lt;code&gt;dbms_debug_jdwp.disconnect;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Setting up the debugger&lt;/span&gt;&lt;br /&gt;In SQL Developer login with the same user as Code Tester and right click on your connection, a context menu appears and select the 'Remote Debug' option. A small window with the title 'Debugger - Listen for the JPDA'  (Java Platform Debugger Architecture) appears, enter the address or host name where SQL Developer should listen to connect. Use the same IP address as in &lt;code&gt;dbms_debug_jdwp.connect_tcp&lt;/code&gt;. Also check if the port is the same.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_yk_QuH_zS3Y/RnVBVZ9RVLI/AAAAAAAAACk/Jbdf9L8uB0U/s1600-h/sqldeveloper008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_yk_QuH_zS3Y/RnVBVZ9RVLI/AAAAAAAAACk/Jbdf9L8uB0U/s200/sqldeveloper008.jpg" alt="" id="BLOGGER_PHOTO_ID_5077035990931035314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_yk_QuH_zS3Y/RnVBVJ9RVJI/AAAAAAAAACU/8RQRjGdZ5fE/s1600-h/sqldeveloper009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_yk_QuH_zS3Y/RnVBVJ9RVJI/AAAAAAAAACU/8RQRjGdZ5fE/s200/sqldeveloper009.jpg" alt="" id="BLOGGER_PHOTO_ID_5077035986636067986" border="0" /&gt;&lt;/a&gt;&lt;p&gt;Before switching to Code Tester again &lt;span style="color: rgb(255, 0, 0);"&gt;set a breakpoint&lt;/span&gt; in your code (and &lt;span style="color: rgb(255, 0, 0);"&gt;compile your code for debug&lt;/span&gt;) otherwise the debugger will not stop at your breakpoint. At last but not at least make sure the user has the &lt;code style="color: rgb(255, 0, 0);"&gt;debug connect session&lt;/code&gt; privilege and the &lt;code style="color: rgb(255, 0, 0);"&gt;debug any procedure&lt;/code&gt; when debugging other users objects.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Debugger meets debuggee&lt;/span&gt;&lt;br /&gt;It is time to run your test with Code Tester. SQL Developer will stop on your breakpoint. Note: while debugging your code Code Tester will not respond.  After stepping through your code press the resume button in SQL Developer to return to Code Tester. As an example I modified the code of the  normal usage test case of the function &lt;code&gt;qctod#betwnstr&lt;/code&gt; (see for an explanation and the source code  &lt;a href="http://www.unit-test.com/Presentations/present.php?rid=3"&gt;How Quest Code Tester for Oracle can help you get rid of bugs in your PL/SQL procedures&lt;/a&gt;). In the picture below SQL Developer hits the breakpoint at line 13. In the data tab you can see all variables and their values.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_yk_QuH_zS3Y/RnVBVJ9RVKI/AAAAAAAAACc/I-02HsN5Mvw/s1600-h/sqldeveloper010.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_yk_QuH_zS3Y/RnVBVJ9RVKI/AAAAAAAAACc/I-02HsN5Mvw/s200/sqldeveloper010.jpg" alt="" id="BLOGGER_PHOTO_ID_5077035986636068002" border="0" /&gt;&lt;/a&gt;&lt;p&gt;This example shows how to use remote debugging with Code Tester. Instead of using SQL Developer as debugger you can also use &lt;a href="http://www.toadsoft.com/toad_oracle.htm"&gt;Toad for Oracle&lt;/a&gt; or &lt;a href="http://www.oracle.com/technology/products/jdev/index.html"&gt;Jdeveloper&lt;/a&gt;. And also every front end can be used as debuggee for remote debugging as long the calls to &lt;code&gt;dbms_debug_jdwp&lt;/code&gt; can be implemented. Let's start debugging!&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;Links&lt;/span&gt;&lt;br /&gt;I found the following links usefully while writing this blog entry:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;The basics explained: &lt;a href="http://sueharper.blogspot.com/2006/07/remote-debugging-with-sql-developer_13.html"&gt;Remote Debugging with SQL Developer&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Remote debugging and Application Express: &lt;a href="http://www.orablogs.com/krice/archives/001691.html"&gt;Wonder twin powers activate!&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Comments in the package specification of &lt;code&gt;SYS.DBMS_DEBUG_JDWP&lt;/code&gt; &lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=260"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The &lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=260"&gt;SQL Developer forum&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.trivadis.com/Images/JPDA_tcm17-7136.pdf"&gt;&lt;span class="text9grey"&gt;&lt;span id="_SE_FLD" _se_fld="tcm:Content/custom:Content/custom:Title[1]"&gt;Debugging PL/SQL and Java Stored Programs with JPDA&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-5342406427896095952?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=gonCqiPpYYo:opoP10MsBkM:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=gonCqiPpYYo:opoP10MsBkM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=gonCqiPpYYo:opoP10MsBkM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=gonCqiPpYYo:opoP10MsBkM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=gonCqiPpYYo:opoP10MsBkM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/5342406427896095952/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=5342406427896095952" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/5342406427896095952?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/5342406427896095952?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/gonCqiPpYYo/remote-debugging-code-tester.html" title="Remote debugging Code Tester" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_yk_QuH_zS3Y/RnVBVZ9RVLI/AAAAAAAAACk/Jbdf9L8uB0U/s72-c/sqldeveloper008.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/06/remote-debugging-code-tester.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MMRnk9fyp7ImA9WB5TF04.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-3738283110382997942</id><published>2007-05-24T23:42:00.000+02:00</published><updated>2007-06-02T00:04:47.767+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-06-02T00:04:47.767+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PL/SQL" /><title>Returning into clause and post statement triggers</title><content type="html">&lt;p&gt;If you are using &lt;a href="http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm#LNPLS01354"&gt;&lt;code&gt;RETURNING INTO&lt;/code&gt;&lt;/a&gt; clauses with DML statements and you are also using (post statement) &lt;a href="http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14220/triggers.htm#i12313"&gt;triggers&lt;/a&gt;  then you should be aware of the following caveat where the values of the &lt;code&gt;RETURNING INTO&lt;/code&gt; do not match the column values.&lt;/p&gt;&lt;p&gt;To show this behavior, set up a small test case first. A table &lt;code&gt;t1&lt;/code&gt; with one column &lt;code&gt;c1&lt;/code&gt; with an &lt;code&gt;after insert statement&lt;/code&gt; trigger, modifying the &lt;code&gt;c1&lt;/code&gt; column.&lt;/p&gt;&lt;pre&gt;SQL&gt; CREATE TABLE t1(c1 VARCHAR2(10));&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; CREATE TRIGGER t_ais_t1 AFTER INSERT ON t1&lt;br /&gt;2  BEGIN&lt;br /&gt;3    UPDATE t1&lt;br /&gt;4    SET c1 = 'TRIGGER';&lt;br /&gt;5  END;&lt;br /&gt;6  /&lt;br /&gt;&lt;br /&gt;Trigger created.&lt;/pre&gt;&lt;p&gt;Insert a row in &lt;code&gt;t1&lt;/code&gt; and return the new value of &lt;code&gt;c1&lt;/code&gt; into bind variable &lt;code&gt;c1&lt;/code&gt;.&lt;/p&gt;&lt;pre&gt;SQL&gt; VARIABLE c1 VARCHAR2(10)&lt;br /&gt;SQL&gt;&lt;br /&gt;SQL&gt; INSERT INTO t1(c1)VALUES('SQLPLUS') RETURNING c1 INTO :c1&lt;br /&gt;2  /&lt;br /&gt;&lt;br /&gt;1 row created.&lt;/pre&gt;&lt;p&gt;And inspect the contents of the table and the value of the bind variable.&lt;/p&gt;&lt;pre&gt;SQL&gt;&lt;br /&gt;SQL&gt; SELECT c1 "column",&lt;br /&gt;2    :c1 "bind"&lt;br /&gt;3  FROM t1&lt;br /&gt;4  /&lt;br /&gt;&lt;br /&gt;column     bind&lt;br /&gt;---------- ----------&lt;br /&gt;TRIGGER    SQLPLUS&lt;br /&gt;&lt;br /&gt;1 row selected.&lt;/pre&gt;&lt;p&gt;As expected the value of column &lt;code&gt;c1&lt;/code&gt; is &lt;code&gt;TRIGGER&lt;/code&gt;. The value is the bind variable is &lt;code&gt;SQLPLUS&lt;/code&gt;. This value is set before the after statement trigger starts.&lt;/p&gt;&lt;p&gt;Although this code is not production code, you might notice this behavior in production code as well: I discovered this behavior hidden in a &lt;a href="http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#sthref1293"&gt;mutating table&lt;/a&gt; workaround.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-3738283110382997942?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=yPNDbWmvF1c:LIpkW9yt1lk:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=yPNDbWmvF1c:LIpkW9yt1lk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=yPNDbWmvF1c:LIpkW9yt1lk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=yPNDbWmvF1c:LIpkW9yt1lk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=yPNDbWmvF1c:LIpkW9yt1lk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/3738283110382997942/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=3738283110382997942" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/3738283110382997942?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/3738283110382997942?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/yPNDbWmvF1c/returning-into-clause-and-post.html" title="Returning into clause and post statement triggers" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/05/returning-into-clause-and-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AFRHszfSp7ImA9WBFaEEs.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-7624660011151650497</id><published>2007-05-13T13:44:00.000+02:00</published><updated>2007-05-13T15:08:35.585+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-13T15:08:35.585+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQLDeveloper" /><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>APEX  reports and SQL Developer</title><content type="html">&lt;p&gt;Both &lt;a href="http://krisrice.blogspot.com/2007/05/new-patch-with-apex-features.html"&gt; Kris Rice&lt;/a&gt; and &lt;a href="http://dgielis.blogspot.com/2007/05/apex-reports-in-sql-developer.html"&gt;Dimitri Gieles&lt;/a&gt; blogged about new APEX reports in SQL Developer 1.1.3 . Minor detail: those reports are build for Application Express version 3.0.1 , which is not released yet.&lt;/p&gt;&lt;p&gt;I installed the new version of SQL Developer, and tried to run the APEX reports (location in the reports tree: All reports, Data dictionary Reports, Application Express). Surprisingly, I did not get the message &lt;code&gt;Application Express 3.0.1 or higher required&lt;/code&gt;. In a few cases I received an error: &lt;code&gt;ORA-00904 invalid identifier&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_yk_QuH_zS3Y/RkcLhJB88DI/AAAAAAAAACE/-tkgRrF2WFY/s1600-h/sqldeveloper006.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_yk_QuH_zS3Y/RkcLhJB88DI/AAAAAAAAACE/-tkgRrF2WFY/s200/sqldeveloper006.jpg" alt="" id="BLOGGER_PHOTO_ID_5064028969989107762" border="0" /&gt;&lt;/a&gt;To find the SQL behind the reports a simple copy and paste of the report did not work i.e select the Application report, right click and select copy. Select the User Defined Reports, right click and paste from, nothing happened. Even export of the report(s) did not work.&lt;/p&gt;&lt;p&gt;After some searching I found the report SQL hidden in a &lt;code&gt;&lt;/code&gt;file: &lt;code&gt;oracle.sqldeveloper.report.jar&lt;/code&gt; (location sqldeveloper\extentions directory). This &lt;code&gt;.jar&lt;/code&gt; file includes an &lt;code&gt;apex30.xml&lt;/code&gt;, this file contains all the APEX reports in XML format (you can unzip the XML file with an unzip utility). The next step is to import the &lt;code&gt;apex30.xml&lt;/code&gt; and then you will see all the reports in the User Defined Reports branche as well.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_yk_QuH_zS3Y/RkcLrJB88EI/AAAAAAAAACM/2gIrvfGAZWc/s1600-h/sqldeveloper007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_yk_QuH_zS3Y/RkcLrJB88EI/AAAAAAAAACM/2gIrvfGAZWc/s200/sqldeveloper007.jpg" alt="" id="BLOGGER_PHOTO_ID_5064029141787799618" border="0" /&gt;&lt;/a&gt;Changing the SQL is left as an exercise to the reader... ;-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-7624660011151650497?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=eHWsEeTfBzs:HMVDcb-gNAI:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=eHWsEeTfBzs:HMVDcb-gNAI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=eHWsEeTfBzs:HMVDcb-gNAI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=eHWsEeTfBzs:HMVDcb-gNAI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=eHWsEeTfBzs:HMVDcb-gNAI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/7624660011151650497/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=7624660011151650497" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/7624660011151650497?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/7624660011151650497?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/eHWsEeTfBzs/apex-reports-and-sql-developer.html" title="APEX  reports and SQL Developer" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_yk_QuH_zS3Y/RkcLhJB88DI/AAAAAAAAACE/-tkgRrF2WFY/s72-c/sqldeveloper006.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/05/apex-reports-and-sql-developer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkINR389fip7ImA9WBFVGEo.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-8804438756795883514</id><published>2007-04-17T23:30:00.000+02:00</published><updated>2007-04-18T07:36:36.166+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-18T07:36:36.166+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>Multi value selectors</title><content type="html">&lt;p&gt;APEX had three multi value selectors: check box, multi select and list manager. APEX 3.0 introduces a new multi value selector: the shuttle. An shuttle consists of two text areas with buttons between the the area's to move items back and forth. At the right side, the selection, there are buttons to change the order of the items in the right text area. All selectors are based on a list of values. Setting or getting values of these selectors can be done with colon separated strings i.e. &lt;code&gt; 'Violet:Indigo:Blue'&lt;/code&gt;.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_yk_QuH_zS3Y/RiVBIFLBXFI/AAAAAAAAAB0/x75cd9n4g1k/s1600-h/mulitvalueselects.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_yk_QuH_zS3Y/RiVBIFLBXFI/AAAAAAAAAB0/x75cd9n4g1k/s200/mulitvalueselects.jpg" alt="" id="BLOGGER_PHOTO_ID_5054517763876412498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The shuttle and list manager also preserve the select order as you can see in the picture. For each selector the same values in the  same order are selected: first Violet and second Indigo. As you can see in the text boxes the shuttle and list manager preserve selection order in contrary with check box and multi select. The picture shown here is a modified version of on-line demo &lt;a href="http://apex.oracle.com/pls/otn/f?p=37719"&gt;Item Types&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-8804438756795883514?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=r788P9786uk:fwlJTugzPqU:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=r788P9786uk:fwlJTugzPqU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=r788P9786uk:fwlJTugzPqU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=r788P9786uk:fwlJTugzPqU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=r788P9786uk:fwlJTugzPqU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8804438756795883514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8804438756795883514?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/r788P9786uk/multi-value-selectors.html" title="Multi value selectors" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_yk_QuH_zS3Y/RiVBIFLBXFI/AAAAAAAAAB0/x75cd9n4g1k/s72-c/mulitvalueselects.jpg" height="72" width="72" /><feedburner:origLink>http://jornica.blogspot.com/2007/04/multi-value-selectors.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkINQXY5eCp7ImA9WxZXE0U.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-8695654090430193220</id><published>2007-04-02T23:16:00.001+02:00</published><updated>2008-03-01T16:16:30.820+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-01T16:16:30.820+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XE" /><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>APEX 3.0 on XE part 2</title><content type="html">&lt;p style="border: 1px solid red; padding: 5px;"&gt;On 29 Februari 2008 Oracle released Application Express 3.1 . With this release you can upgrade the Application Express within Oracle XE to 3.1. For more information on this topic see &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.1_and_xe.html"&gt;Oracle Database XE and Application Express 3.1&lt;/a&gt; and &lt;a href="http://jornica.blogspot.com/2008/03/apex-31-on-xe.html"&gt;APEX 3.1 on XE &lt;/a&gt;.&lt;/p&gt;&lt;p&gt;If you followed the guidelines of &lt;a href="http://jornica.blogspot.com/2007/03/apex-30-on-xe.html"&gt;APEX 3.0 on XE&lt;/a&gt;, you have a working APEX 3.0 interface. However the administrative interface of APEX is not installed on XE by default. Using this interface you can manage all aspects of the service including creating, removing, and managing workspaces. &lt;a href="http://www.blogger.com/profile/05436768788579147132"&gt;Barney Mattox&lt;/a&gt; discovered a workaround to install this interface as well.&lt;/p&gt;&lt;p&gt;In order to install the administrative interface perform the following steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Start SQL*Plus. Make sure your working folder is the APEX installation folder (where &lt;code&gt;apexins.sql&lt;/code&gt; is located).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Connect as user &lt;code&gt;SYS&lt;/code&gt;.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;ALTER SESSION SET CURRENT_SCHEMA = FLOWS_030000&lt;br /&gt;/&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;The following command imports the administrative interface: &lt;code&gt;@script\f4050.sql&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;The following command imports the request for workspace interface: &lt;code&gt;@script\f4700.sql&lt;/code&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Change the password for the &lt;code&gt;ADMIN&lt;/code&gt; user in order to login in the administrative interface: &lt;code&gt;@apxxepwd.sql&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Use the following URL to access the administrative interface &lt;code&gt;http://server:port/apex/f?p=4550:10&lt;/code&gt; i.e. &lt;code&gt;http://127.0.0.1:8080/apex/f?p=4550:10&lt;/code&gt; .&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Additonal notes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Issue a &lt;code&gt;spool install.log&lt;/code&gt; after logging in to SQL* Plus. If there occurs an error SQL*Plus will exit. You can use the logfile to find out what went wrong.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;I experienced problems with step 3: Illegal security group id value for this schema. A workaround is to login as &lt;code&gt;FLOWS_030000&lt;/code&gt; and run the scripts. First you need to unlock user &lt;code&gt;FLOWS_030000&lt;/code&gt;:&lt;br /&gt;&lt;code&gt;ALTER USER FLOWS_030000 IDENTIFIED BY password ACCOUNT UNLOCK&lt;br /&gt;/&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-8695654090430193220?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=HTs_tggWwJ8:orifJavsIag:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=HTs_tggWwJ8:orifJavsIag:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=HTs_tggWwJ8:orifJavsIag:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=HTs_tggWwJ8:orifJavsIag:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=HTs_tggWwJ8:orifJavsIag:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/8695654090430193220/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=8695654090430193220" title="12 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8695654090430193220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8695654090430193220?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/HTs_tggWwJ8/apex-30-on-xe-part-2.html" title="APEX 3.0 on XE part 2" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/04/apex-30-on-xe-part-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMCQH4_cSp7ImA9WBFXFUk.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-8820971392554029543</id><published>2007-03-20T22:37:00.000+01:00</published><updated>2007-03-22T08:11:01.049+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-22T08:11:01.049+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PL/SQL" /><title>Enumeration types in PL/SQL?</title><content type="html">&lt;p&gt;In the book &lt;a href="http://safari.oreilly.com/0596005873"&gt;Oracle PL/SQL for DBAs&lt;/a&gt; the definition of the type &lt;code&gt;BOOLEAN&lt;/code&gt; is shown:&lt;/p&gt;&lt;pre&gt;SELECT text&lt;br /&gt;  FROM all_source&lt;br /&gt; WHERE owner = 'SYS'&lt;br /&gt;   AND type = 'PACKAGE'&lt;br /&gt;   AND name = 'STANDARD' &lt;br /&gt;   AND line &lt;5&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;TEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             &lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;package STANDARD AUTHID CURRENT_USER is              &lt;br /&gt;&lt;br /&gt;  /********** Types and subtypes, do not reorder **********/ &lt;br /&gt;  type BOOLEAN is (FALSE, TRUE);&lt;br /&gt;&lt;br /&gt;4 rows selected.&lt;/pre&gt;&lt;p&gt;Have you seen that kind of type definition before? I did, it looks like a Delphi enumeration type when you replace the &lt;code&gt;is&lt;/code&gt; with &lt;code&gt;=&lt;/code&gt; . Let's define our own type.&lt;/p&gt;&lt;pre&gt;create package TRAFFIC is &lt;br /&gt;  type LIGHT_T is (RED, YELLOW, GREEN);&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;Warning: Package created with compilation errors.&lt;br /&gt;&lt;br /&gt;SHOW ERR&lt;br /&gt;&lt;br /&gt;LINE/COL   TEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             &lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;2,19       PLS-00505: User Defined Types may only be defined &lt;br /&gt;           as PLSQL Tables or Records                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     &lt;br /&gt;2,3        PL/SQL: Declaration ignored                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      &lt;br /&gt;&lt;br /&gt;2 rows selected&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Perhaps this is an enhancement request for Oracle 11g release 2?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-8820971392554029543?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=loYm1d9qELs:P2r9VQd-x8s:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=loYm1d9qELs:P2r9VQd-x8s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=loYm1d9qELs:P2r9VQd-x8s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=loYm1d9qELs:P2r9VQd-x8s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=loYm1d9qELs:P2r9VQd-x8s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/8820971392554029543/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=8820971392554029543" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8820971392554029543?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/8820971392554029543?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/loYm1d9qELs/enumeration-types-in-plsql.html" title="Enumeration types in PL/SQL?" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/03/enumeration-types-in-plsql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMNRX07fyp7ImA9WxZXE0U.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-6108805920896134140</id><published>2007-03-17T14:36:00.001+01:00</published><updated>2008-03-01T16:14:54.307+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-01T16:14:54.307+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XE" /><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>APEX 3.0 on XE</title><content type="html">&lt;p style="border: 1px solid red; padding: 5px;"&gt;On 29 Februari 2008 Oracle released Application Express 3.1 . With this release you can upgrade the Application Express within Oracle XE to 3.1. For more information on this topic see &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.1_and_xe.html"&gt;Oracle Database XE and Application Express 3.1&lt;/a&gt; and &lt;a href="http://jornica.blogspot.com/2008/03/apex-31-on-xe.html"&gt;APEX 3.1 on XE &lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Oracle Database Express Edition (XE) contains Application Express (APEX2.1) version 2.1 and yesterday Oracle released version 3.0 .  While reading the installation guide regarding the Oracle Database requirement I noticed the following:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;Do not install this version of Oracle Application Express on Oracle Database Express Edition (Oracle Database XE).&lt;/blockquote&gt;&lt;p&gt;With the previous release of APEX2.2.1 some people installed this version into their XE database (see this OTN thread: &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=433834&amp;amp;start=0&amp;amp;tstart=0"&gt;&lt;span class="jive-subject"&gt;Install APEX 2.2.1 on XE is possible! I think...&lt;/span&gt;&lt;/a&gt;). So why not try to upgrade my APEX2.1 to APEX3.0 on my XE database? It really sounds like a challenge!&lt;/p&gt;&lt;p&gt;However installing APEX3.0 on XE is an unsupported configuration by Oracle. This does not imply it will not work  but &lt;span style="color: rgb(255, 0, 0);"&gt;if you run into problems there is no technical support available&lt;/span&gt; (see this OTN thread&lt;span class="jive-subject"&gt;                     &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=486689&amp;amp;tstart=0"&gt;Install Apex 3.0 on Oracle XE&lt;/a&gt;&lt;/span&gt;). Also make a backup before you start the installation. My first attempt to upgrade ended with a database where I could not login into APEX, the images where missing and when trying to find out what went wrong, a BSOD appeared.  You are warned...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The installation consists of two parts: running update scripts and copying the images file into the virtual path /i/.  The first script to run is &lt;code&gt;apexins.sql&lt;/code&gt;.  The good news about this script is this remark: &lt;code&gt;02/15/2007 - Remove XE check&lt;/code&gt;. There is no check on the database edition anymore.  And the bad news is &lt;code&gt;apexins.sql&lt;/code&gt; calls &lt;code&gt;coreins.sql&lt;/code&gt; which contains the following code:&lt;/p&gt;&lt;pre&gt;Rem&lt;br /&gt;Rem  Set XE variable to '1' for XE installation, '0' for non-XE installation&lt;br /&gt;Rem&lt;br /&gt;define XE = '0'&lt;/pre&gt;&lt;p&gt;Set the variable XE to 1 and  save this script and run &lt;code&gt;apexins.sql&lt;/code&gt; according to the installation guide.After completion of this script make sure there are no invalid objects. I have still one invalid package body &lt;code&gt;WWV_FLOW_XE_CONFIG&lt;/code&gt;. There are no other objects calling this package, so errors can occur if this package is called with dynamic PL/SQL.&lt;/p&gt;&lt;p&gt;While the script is running you can copy the images into the virtual directory (see &lt;a href="http://daust.blogspot.com/2006/03/where-are-images-of-application.html"&gt;Where are the /images of Application Express in OracleXE&lt;/a&gt;). The total installation time was 1 hour.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Login and choose About Application Express, you should see something like this picture.&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_yk_QuH_zS3Y/RfxRj99IGMI/AAAAAAAAAAw/yGzvFMUIjQI/s1600-h/apex30onxe.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_yk_QuH_zS3Y/RfxRj99IGMI/AAAAAAAAAAw/yGzvFMUIjQI/s400/apex30onxe.jpg" alt="" id="BLOGGER_PHOTO_ID_5042995361116330178" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-6108805920896134140?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=T6yFgFG2b2E:pIOF3O4ZKWU:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=T6yFgFG2b2E:pIOF3O4ZKWU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=T6yFgFG2b2E:pIOF3O4ZKWU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=T6yFgFG2b2E:pIOF3O4ZKWU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=T6yFgFG2b2E:pIOF3O4ZKWU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/6108805920896134140/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=6108805920896134140" title="26 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/6108805920896134140?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/6108805920896134140?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/T6yFgFG2b2E/apex-30-on-xe.html" title="APEX 3.0 on XE" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_yk_QuH_zS3Y/RfxRj99IGMI/AAAAAAAAAAw/yGzvFMUIjQI/s72-c/apex30onxe.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">26</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/03/apex-30-on-xe.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEARHo-eyp7ImA9WBFXEUs.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-2419642342242778155</id><published>2007-03-13T23:09:00.000+01:00</published><updated>2007-03-17T21:50:45.453+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-17T21:50:45.453+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Quest Code Tester  for Oracle" /><title>PL/SQL Test-A-Thon links</title><content type="html">&lt;p&gt;Some links concerning the &lt;a href="http://www.odtugopp07.com/testathon.htm"&gt;Test-a-Thon&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.toadworld.com/Default.aspx?tabid=67&amp;EntryID=70"&gt;Not such a crazy idea after all!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://biz.yahoo.com/bw/070307/20070307005185.html?.v=1"&gt;Automated Code Testing Prevails at the PL/SQL Test-A-Thon&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-2419642342242778155?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Ydnl4es5OVw:feRe1-XapXg:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Ydnl4es5OVw:feRe1-XapXg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Ydnl4es5OVw:feRe1-XapXg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=Ydnl4es5OVw:feRe1-XapXg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=Ydnl4es5OVw:feRe1-XapXg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/2419642342242778155/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=2419642342242778155" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/2419642342242778155?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/2419642342242778155?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/Ydnl4es5OVw/test-thon-links.html" title="PL/SQL Test-A-Thon links" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/03/test-thon-links.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QMQ3YyfCp7ImA9WBFXE04.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-4113176923413418277</id><published>2007-03-02T03:24:00.001+01:00</published><updated>2007-03-19T22:23:02.894+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-03-19T22:23:02.894+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Quest Code Tester  for Oracle" /><title>PL/SQL Test-A-Thon</title><content type="html">&lt;p&gt;At the end of the first day of OPP2007, Steven Feuerstein organized a &lt;a href="http://www.odtugopp07.com/testathon.htm"&gt;Test-A-Thon&lt;/a&gt; to promote the use of &lt;a href="http://unittest.inside.quest.com/index.jspa"&gt;Quest Code Tester for Oracle &lt;/a&gt; (QCTO).&lt;/p&gt;&lt;p&gt;A Test-A-Thon is a contest that tests your ability to construct unit tests for PL/SQL code with a tool like QCTO.&lt;/p&gt;&lt;p&gt;You have a fixed amount of time to solve a number of exercises. Each exercise consists of a PL/SQL program and a number of tests with the expected outcome.&lt;/p&gt;&lt;p&gt;The winner is the person who successfully builds the most test cases within a certain amount of time and is able to show the test results with the test tool.&lt;/p&gt;&lt;p&gt;I joined in the contest and obtained a shared second place together with two other participants.The first price went to &lt;a href="http://blueeyesfeup.blogspot.com/search/label/Oracle%20Blues"&gt;Filipe Silva&lt;/a&gt; from Portugal who solved four exercises and a bonus exercise within an hour. Congratulations!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_yk_QuH_zS3Y/Rf7-4N9IGNI/AAAAAAAAABo/cHm-AFSCawk/s1600-h/Test-A-Thon.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_yk_QuH_zS3Y/Rf7-4N9IGNI/AAAAAAAAABo/cHm-AFSCawk/s200/Test-A-Thon.jpg" alt="" id="BLOGGER_PHOTO_ID_5043748874473707730" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-4113176923413418277?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=J5-ZfOXhwHc:jqkVsSUCITA:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=J5-ZfOXhwHc:jqkVsSUCITA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=J5-ZfOXhwHc:jqkVsSUCITA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=J5-ZfOXhwHc:jqkVsSUCITA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=J5-ZfOXhwHc:jqkVsSUCITA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/4113176923413418277/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=4113176923413418277" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/4113176923413418277?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/4113176923413418277?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/J5-ZfOXhwHc/plsql-test-thon.html" title="PL/SQL Test-A-Thon" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_yk_QuH_zS3Y/Rf7-4N9IGNI/AAAAAAAAABo/cHm-AFSCawk/s72-c/Test-A-Thon.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/03/plsql-test-thon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YMQHY7eSp7ImA9WBFTF0Q.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-7652002307147431916</id><published>2007-01-31T21:40:00.000+01:00</published><updated>2007-02-06T21:53:01.801+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-02-06T21:53:01.801+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>APEX System Preferences</title><content type="html">&lt;p&gt;In a previous &lt;a href="http://jornica.blogspot.com/2007/01/mail-from-application-express.html"&gt;post&lt;/a&gt; I struggled with the differences between system preferences and database parameters. In this post I focus on system preferences again.&lt;/p&gt;&lt;p&gt;Oracle provides the package &lt;code&gt;wwv_flow_platform&lt;/code&gt; to set and get the  system preferences. With this query you get all the system preferences as well:&lt;/p&gt;&lt;pre&gt;SELECT name, value, pref_desc FROM flows_020100.wwv_flow_platform_prefs&lt;br /&gt;/&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;NAME                              VALUE         PREF_DESC&lt;br /&gt;--------------------------------  ------------  --------------------------------------&lt;br /&gt;SMTP_HOST_ADDRESS                 smtp.isp.com  The address of the SMTP server&lt;br /&gt;                                                used to relay mail.&lt;br /&gt;SMTP_HOST_PORT                    25            The port that the SMTP server&lt;br /&gt;                                                listens for requests.&lt;br /&gt;MAX_SCRIPT_SIZE                   500000        The maximum allowable size for&lt;br /&gt;                                                a script text.&lt;br /&gt;SQL_SCRIPT_MAX_OUTPUT_SIZE        200000        The maximum allowable size for&lt;br /&gt;                                                an individual script result.&lt;br /&gt;WORKSPACE_MAX_OUTPUT_SIZE         2000000       The maximum space allocated for&lt;br /&gt;                                                script results.&lt;br /&gt;ENABLE_TRANSACTIONAL_SQL          Y             The flag which determines if&lt;br /&gt;                                                Transactional SQL Commands are&lt;br /&gt;                                                enabled on this instance.&lt;br /&gt;PLSQL_EDITING                     Y             The flag used in SQL Workshop&lt;br /&gt;                                                Object Browser to enable user&lt;br /&gt;                                                to edit and compile PL/SQL.&lt;br /&gt;WORKSPACE_PROVISION_DEMO_OBJECTS  Y             The flag used in Instance&lt;br /&gt;                                                Adminstration which determines&lt;br /&gt;                                                if demonstration applications&lt;br /&gt;                                                and database objects are created in&lt;br /&gt;                                                new workspaces.&lt;br /&gt;DISABLE_ADMIN_LOGIN               N             The flag which determines if&lt;br /&gt;                                                Adminstration services are disabled.&lt;br /&gt;DISABLE_WORKSPACE_LOGIN           N             The flag which determines if&lt;br /&gt;                                                workspace login is disabled.&lt;br /&gt;ALLOW_DB_MONITOR                  Y             The flag which determines if database&lt;br /&gt;                                                monitoring is enabled.&lt;br /&gt;SERVICE_REQUEST_FLOW              MANUAL        Determines default provisioning&lt;br /&gt;                                                mode.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-7652002307147431916?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=UoFf8FZr5Lk:R-lrr-0YVRw:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=UoFf8FZr5Lk:R-lrr-0YVRw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=UoFf8FZr5Lk:R-lrr-0YVRw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=UoFf8FZr5Lk:R-lrr-0YVRw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=UoFf8FZr5Lk:R-lrr-0YVRw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/7652002307147431916/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=7652002307147431916" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/7652002307147431916?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/7652002307147431916?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/UoFf8FZr5Lk/apex-system-preferences.html" title="APEX System Preferences" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/01/apex-system-preferences.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIASHcyeCp7ImA9WBFTEUQ.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-6476501273962221393</id><published>2007-01-30T20:25:00.000+01:00</published><updated>2007-01-30T22:45:49.990+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-30T22:45:49.990+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Materialized views" /><title>Unbreakable Materialized Views</title><content type="html">&lt;h3&gt;&lt;a href="http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76994/mv.htm#32950"&gt;&lt;span&gt;Oracle8i: Invalidating a Materialized View&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p class="BP"&gt;Dependencies related to materialized views are automatically maintained to ensure correct operation. When a materialized view is created, the materialized view depends on the detail tables referenced in its definition. Any &lt;span style="color: rgb(204, 102, 0); font-weight: bold;"&gt;DDL&lt;/span&gt; operation, such as a DROP or ALTER, on any dependency in the materialized view will cause it to become invalid.&lt;/p&gt;&lt;h3&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96520/mv.htm#32950"&gt;&lt;span&gt;Oracle9i: Invalidating Materialized Views&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p class="BP"&gt;Dependencies related to materialized views are automatically maintained to ensure correct operation. When a materialized view is created, the materialized view depends on the detail tables referenced in its definition. Any &lt;span style="color: rgb(204, 102, 0); font-weight: bold;"&gt;DML&lt;/span&gt; operation, such as a &lt;code&gt;INSERT&lt;/code&gt;, or &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, or &lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;DDL&lt;/span&gt; operation on any dependency in the materialized view will cause it to become invalid.&lt;/p&gt;&lt;h3&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14223/advmv.htm#sthref610"&gt;Oracle10g: Invalidating Materialized Views&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Dependencies related to materialized views are automatically maintained to ensure correct operation. When a materialized view is created, the materialized view depends on the detail tables referenced in its definition. Any &lt;span style="color: rgb(204, 102, 0); font-weight: bold;"&gt;DML&lt;/span&gt; operation, such as an &lt;code&gt;INSERT&lt;/code&gt;, or &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, or &lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;DDL&lt;/span&gt; operation on any dependency in the materialized view will cause it to become invalid.&lt;/p&gt;&lt;h2&gt;RTFM&lt;/h2&gt;&lt;p&gt;In 9i and 10g, a materialized view becomes automatically invalid when performing DML or DDL. Don't worry:&lt;/p&gt;&lt;blockquote&gt;A materialized view is automatically revalidated when it is referenced. In many cases, the materialized view will be successfully and transparently revalidated.&lt;/blockquote&gt;&lt;p&gt; Suppose you have a materialized view on &lt;code&gt;EMP&lt;/code&gt; and your application aborts immediate after logon when invalid objects are found. The "early bird"  user modifies the &lt;code&gt;EMP&lt;/code&gt; table and all others users cannot start the application anymore. I hear the sound of a ringing phone...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-6476501273962221393?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=jHVAesCHw0I:saAzI_KJSZ8:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=jHVAesCHw0I:saAzI_KJSZ8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=jHVAesCHw0I:saAzI_KJSZ8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=jHVAesCHw0I:saAzI_KJSZ8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=jHVAesCHw0I:saAzI_KJSZ8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/6476501273962221393/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=6476501273962221393" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/6476501273962221393?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/6476501273962221393?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/jHVAesCHw0I/unbreakable-materialized-views.html" title="Unbreakable Materialized Views" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/01/unbreakable-materialized-views.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8NSXc8fip7ImA9WBFTEUQ.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-4069932734491392140</id><published>2007-01-29T21:48:00.000+01:00</published><updated>2007-01-30T22:34:58.976+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-30T22:34:58.976+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XE" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Drive" /><title>Oracle Drive and Oracle Express</title><content type="html">&lt;p&gt;I read this &lt;a href="http://iadvise.blogspot.com/2006/07/oracle-drive-few-months-ago-i-bumped.html"&gt; post&lt;/a&gt; about Oracle Drive. Oracle Drive is a WebDav (Web-based Distributed Authoring and Versioning) client for use in an Oracle Portal environment. I installed the client and used my Oracle Express (XE) database as server. I mapped the &lt;code&gt;N:&lt;/code&gt; drive to &lt;code&gt;127.0.0.1:8080&lt;code&gt;.&lt;/p&gt;&lt;p&gt;Now I can use the following features:&lt;ul&gt;&lt;li&gt;I can work off line, I can change files while I am  not connected with the database i.e. database is down or when I work at a remote location. Synchronization takes place when you connect to the database.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I can schedule a backup of Windows files, this backup copies the files (without compression) to the WebDav folder, the files are stored within the database.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I can put a lock on a file within a WebDav folder, other users can not change this file.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Oracle Drive works with XE and has some "nice to have" features at the cost of a little memory usage. Personally I like the built in Windows Explorer as described in this &lt;a href="http://daust.blogspot.com/2006/03/where-are-images-of-application.html"&gt;post&lt;/a&gt;  a lot more.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-4069932734491392140?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=piyNC9MSyIk:FNch3kj3BZs:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=piyNC9MSyIk:FNch3kj3BZs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=piyNC9MSyIk:FNch3kj3BZs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=piyNC9MSyIk:FNch3kj3BZs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=piyNC9MSyIk:FNch3kj3BZs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/4069932734491392140/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=4069932734491392140" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/4069932734491392140?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/4069932734491392140?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/piyNC9MSyIk/oracle-drive-and-oracle-express.html" title="Oracle Drive and Oracle Express" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/01/oracle-drive-and-oracle-express.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ACR30zeyp7ImA9WBBbGEQ.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-386776267326742179</id><published>2007-01-14T21:19:00.000+01:00</published><updated>2007-01-15T22:16:06.383+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-15T22:16:06.383+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>Mail from Application Express again</title><content type="html">I used a beta version of Oracle XE. The &lt;code&gt;DMBS_EPG&lt;/code&gt; gateway did not work at all. So  I decided to reinstall Oracle XE (production). After reading a &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=462933&amp;tstart=45"&gt;post&lt;/a&gt; on the  Application Express (APEX) forum I recreated my &lt;a href="http://jornica.blogspot.com/2007/01/mail-from-application-express.html"&gt;sendmail&lt;/a&gt; application from scratch. Everything went fine, except the litte detail of sending email did not work anymore. My first solution was to adjust the smtp hostname in the package body but still no mail.&lt;br /&gt;&lt;br /&gt;Have look at the comments in the package specification of &lt;code&gt;htmldb_mail&lt;/code&gt;.&lt;pre&gt;--&lt;br /&gt;--&lt;br /&gt;-- Parameters p_smtp_hostname and p_smtp_portno remain for backward&lt;br /&gt;-- compatibility. But they are ignored. The SMTP host name and&lt;br /&gt;-- parameter are exclusively derived from system preferences&lt;br /&gt;-- when sending mail.&lt;br /&gt;--&lt;br /&gt;procedure push_queue( p_smtp_hostname in varchar2 default null,&lt;br /&gt;p_smtp_portno in varchar2 default null );&lt;/pre&gt;&lt;br /&gt;The SMTP hostname and portnumber are ignored while calling &lt;code&gt;push_queue&lt;/code&gt;. The real settings are derived from system preferences.&lt;br /&gt;&lt;br /&gt;I have never heard of system preferences before, people always talk about database parameters. And  because &lt;code&gt;htmldb_mail&lt;/code&gt; depends on &lt;code&gt;utl_smtp&lt;/code&gt;, I thought that the startup parameter &lt;code&gt;smtp_out_server&lt;/code&gt; did not have the correct value. In fact, the parameter value was null and after setting it to the correct value, the mail was still not sent.&lt;br /&gt;&lt;br /&gt;It took a while surfing to find the system preferences. You can check these preferences as follows.&lt;pre&gt;SELECT wwv_flow_platform.get_preference('SMTP_HOST_ADDRESS') FROM dual&lt;br /&gt;/&lt;/pre&gt;&lt;pre&gt;SELECT wwv_flow_platform.get_preference('SMTP_HOST_PORT')FROM dual&lt;br /&gt;/&lt;/pre&gt;In APEX you can set these preferences in the main menu of application builder and choose the task email configuration.&lt;br /&gt;The following screen appears:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_yk_QuH_zS3Y/RaqiYOlgW5I/AAAAAAAAAAM/MW_PqpajZ-0/s1600-h/Apexmail02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_yk_QuH_zS3Y/RaqiYOlgW5I/AAAAAAAAAAM/MW_PqpajZ-0/s200/Apexmail02.jpg" alt="" id="BLOGGER_PHOTO_ID_5020003271773805458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can set the smtp hostname and portnumber in the email preferences. Or you can manage the mail queue (the mail queue is like the outbox in your mail client) or you can manage the email log. When an item is sent, the header data is moved from the queue into the log.&lt;br /&gt;&lt;br /&gt;Finally, the sendmail application works fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-386776267326742179?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3CXl5r4Ps2I:TaEcy-FVwJE:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3CXl5r4Ps2I:TaEcy-FVwJE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3CXl5r4Ps2I:TaEcy-FVwJE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=3CXl5r4Ps2I:TaEcy-FVwJE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=3CXl5r4Ps2I:TaEcy-FVwJE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/386776267326742179/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=386776267326742179" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/386776267326742179?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/386776267326742179?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/3CXl5r4Ps2I/mail-from-application-express-again.html" title="Mail from Application Express again" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_yk_QuH_zS3Y/RaqiYOlgW5I/AAAAAAAAAAM/MW_PqpajZ-0/s72-c/Apexmail02.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/01/mail-from-application-express-again.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUFQnsyeCp7ImA9WBBbGEQ.&quot;"><id>tag:blogger.com,1999:blog-21169145.post-116810648816813268</id><published>2007-01-06T18:38:00.000+01:00</published><updated>2007-01-15T22:23:33.590+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-15T22:23:33.590+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="APEX" /><title>Mail from Application Express</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger/7477/2138/1600/574466/Apexmail01.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/x/blogger/7477/2138/200/206919/Apexmail01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On the OTN forum &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=460009&amp;tstart=15"&gt;Application Express&lt;/a&gt; (APEX) somebody asked: how to send mail from a report. Assume you have a report with all employees, you can select one or more rows , push a button and your mail is sent. It takes just a few steps!&lt;br /&gt;&lt;br /&gt;The first step is to create a page with a report region, a submit button, an after submit process and an after processing branch. In the after submit process we call a database package &lt;code&gt;p_send_mail&lt;/code&gt;. Make sure the package specification exists before creating the process otherwise you will not be able to save your process.&lt;br /&gt;&lt;br /&gt;The package specification is:&lt;br /&gt;&lt;pre&gt;-----------------------------------------------------------&lt;br /&gt;CREATE OR REPLACE PACKAGE p_send_mail IS&lt;br /&gt; PROCEDURE submit(p_cb_arr wwv_flow_global.vc_arr2);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;-----------------------------------------------------------&lt;/pre&gt;We will come back on this package later.&lt;br /&gt;&lt;h3&gt;Building the report&lt;/h3&gt;We build a simply report based on the query.&lt;br /&gt;&lt;pre&gt;SELECT ename                         ename_ro&lt;br /&gt;,      htmldb_item.checkbox(1,ename) ename_cb&lt;br /&gt;FROM emp&lt;/pre&gt;&lt;br /&gt;The first column ename_ro displays the ename as a normal report field. The second column ename_cb displays a checkbox. The second column uses the function &lt;code&gt;htmldb_item.checkbox&lt;/code&gt;. The first argument 1 is the form element name. The second argument is the value returned by the form element when checked. When the page is submitted APEX composes an array of employee names. The name of this array is &lt;code&gt;htmldb_application.g_f01&lt;/code&gt; (g_f01 corresponds with the form element name 1) and it only contains the employee names of the checked rows.&lt;br /&gt;&lt;br /&gt;Create a submit button and an 'On submit - after Computations and Validations' process. Set the value of the when button pressed attribute to the name of the submit button. Don't forget to set the messages as well. Set the process source to:&lt;br /&gt;&lt;pre&gt;BEGIN&lt;br /&gt; p_send_mail.submit(p_cb_arr =&gt;htmldb_application.g_f01);&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The procedure &lt;code&gt;submit&lt;/code&gt; has an array of employee names as input. In the next paragraphs we will explain the package body.&lt;br /&gt;&lt;h3&gt;Implementing the package body&lt;/h3&gt;The code of the procedure &lt;code&gt;submit&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; PROCEDURE submit(p_cb_arr wwv_flow_global.vc_arr2)&lt;br /&gt; IS&lt;br /&gt; BEGIN&lt;br /&gt;   IF p_cb_arr.COUNT &gt; 0 THEN&lt;br /&gt;     FOR i IN p_cb_arr.FIRST .. p_cb_arr.LAST&lt;br /&gt;     LOOP&lt;br /&gt;       send_mail(p_to =&gt; con_email_to,  &lt;br /&gt;                 p_body =&gt; 'Employee ' || p_cb_arr(i) || ' selected.',  &lt;br /&gt;                 p_subj =&gt; 'Mail from Application Express');&lt;br /&gt;     END LOOP;&lt;br /&gt;   ELSE&lt;br /&gt;     -- In the case there are no checkboxes checked inform the user&lt;br /&gt;     RAISE e_all_cb_unchecked;&lt;br /&gt;   END IF;&lt;br /&gt; END submit;&lt;/pre&gt;&lt;br /&gt;In the procedure &lt;code&gt;submit&lt;/code&gt; we check first If there are 0 elements in the array this means that none of the check boxes is checked. In this case raise an error to inform the user that there is no mail sent. Otherwise call for every employee the procedure &lt;code&gt;send_mail&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;The code for the procedure &lt;code&gt;send_mail&lt;/code&gt; is:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; PROCEDURE send_mail(p_to IN VARCHAR2,       -- receiver&lt;br /&gt;                     p_body IN VARCHAR2,     -- email body (text)&lt;br /&gt;                     p_subj IN VARCHAR2)     -- subject&lt;br /&gt; IS&lt;br /&gt; BEGIN&lt;br /&gt;   -- Place your email in the outbox.&lt;br /&gt;   htmldb_mail.send(p_to =&gt; p_to,  &lt;br /&gt;                    p_from =&gt; con_email_from,  &lt;br /&gt;                    p_body =&gt; p_body,  &lt;br /&gt;                    p_subj =&gt; p_subj);&lt;br /&gt;   -- Send you email(s) now&lt;br /&gt;   htmldb_mail.push_queue(p_smtp_hostname =&gt; con_smtp_hostname,  &lt;br /&gt;                          p_smtp_portno =&gt; con_smtp_portno);&lt;br /&gt; END send_mail;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;APEX provides the &lt;code&gt;HTMLDB_MAIL&lt;/code&gt; package. We use two procedures &lt;code&gt;send&lt;/code&gt; and &lt;code&gt;push_queue&lt;/code&gt;. The procedure &lt;code&gt;send&lt;/code&gt; adds an email message to the queue. And procedure &lt;code&gt;push_queue&lt;/code&gt; sends all messages in the queue immediately.&lt;br /&gt;&lt;br /&gt;Besides the procedures the package body contains some constants. You will have to set  these constants:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;email_to&lt;/code&gt; is the receiver of the emails i.e scott@acme.com.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;smtp_hostname&lt;/code&gt; is the SMTP hostname&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;smtp_portno&lt;/code&gt; is the portnumber of the SMTP host, default 25&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;The complete code of the package body is below and after compiling the package body it time to email!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Update: after reinstalling my Oracle XE database I discovered that Oracle changed the behaviour a little bit. Please read &lt;/span&gt;&lt;a href="http://jornica.blogspot.com/2007/01/mail-from-application-express-again.html"&gt; Mail from application express again&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; as well&lt;/span&gt;.&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;-----------------------------------------------------------&lt;br /&gt;CREATE OR REPLACE PACKAGE BODY p_send_mail IS&lt;br /&gt; -- Change these settings&lt;br /&gt; -- receiver&lt;br /&gt; con_email_to        constant VARCHAR2(2000) := 'aaa@bbb.cc';&lt;br /&gt; -- sender&lt;br /&gt; con_email_from      constant VARCHAR2(2000) := 'XE';&lt;br /&gt;&lt;br /&gt; -- You find the SMTP values in the account settings of your email client.&lt;br /&gt; con_smtp_hostname   constant VARCHAR2(2000) := 'smtp.xxx.yy';&lt;br /&gt; con_smtp_portno     constant VARCHAR2(4)    := '25';&lt;br /&gt;&lt;br /&gt; e_all_cb_unchecked  EXCEPTION;&lt;br /&gt;&lt;br /&gt; -- A simple procedure to create and send an email message.&lt;br /&gt; PROCEDURE send_mail(p_to IN VARCHAR2,       -- receiver&lt;br /&gt;                     p_body IN VARCHAR2,     -- email body (text)&lt;br /&gt;                     p_subj IN VARCHAR2)     -- subject&lt;br /&gt; IS&lt;br /&gt; BEGIN&lt;br /&gt;   -- Place your email in the outbox.&lt;br /&gt;   htmldb_mail.send(p_to =&gt; p_to,  &lt;br /&gt;                    p_from =&gt; con_email_from,  &lt;br /&gt;                    p_body =&gt; p_body,  &lt;br /&gt;                    p_subj =&gt; p_subj);&lt;br /&gt;   -- Send you email(s) now&lt;br /&gt;   htmldb_mail.push_queue(p_smtp_hostname =&gt; con_smtp_hostname,  &lt;br /&gt;                          p_smtp_portno =&gt; con_smtp_portno);&lt;br /&gt; END send_mail;&lt;br /&gt;&lt;br /&gt; -- This procedure is called from the page process.&lt;br /&gt; -- It takes as argument an array with employee names&lt;br /&gt; -- For each checked employee an email is send.&lt;br /&gt; PROCEDURE submit(p_cb_arr wwv_flow_global.vc_arr2)&lt;br /&gt; IS&lt;br /&gt; BEGIN&lt;br /&gt;   IF p_cb_arr.COUNT &gt; 0 THEN&lt;br /&gt;     FOR i IN p_cb_arr.FIRST .. p_cb_arr.LAST&lt;br /&gt;     LOOP&lt;br /&gt;       send_mail(p_to =&gt; con_email_to,  &lt;br /&gt;                 p_body =&gt; 'Employee ' || p_cb_arr(i) || ' selected.',  &lt;br /&gt;                 p_subj =&gt; 'Mail from Application Express');&lt;br /&gt;     END LOOP;&lt;br /&gt;   ELSE&lt;br /&gt;     -- In the case there are no checkboxes checked inform the user&lt;br /&gt;     RAISE e_all_cb_unchecked;&lt;br /&gt;   END IF;&lt;br /&gt; END submit;&lt;br /&gt;END p_send_mail;&lt;br /&gt;/&lt;br /&gt;-----------------------------------------------------------&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21169145-116810648816813268?l=jornica.blogspot.com'/&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:wF9xT3WuBAs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=l53b-BgA5UQ:WHEuaK-Ip50:wF9xT3WuBAs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=l53b-BgA5UQ:WHEuaK-Ip50:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=l53b-BgA5UQ:WHEuaK-Ip50:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jornica?a=l53b-BgA5UQ:WHEuaK-Ip50:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jornica?i=l53b-BgA5UQ:WHEuaK-Ip50:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://jornica.blogspot.com/feeds/116810648816813268/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=21169145&amp;postID=116810648816813268" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/116810648816813268?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/21169145/posts/default/116810648816813268?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/jornica/~3/l53b-BgA5UQ/mail-from-application-express.html" title="Mail from Application Express" /><author><name>Jornica</name><uri>http://www.blogger.com/profile/15492511382521784329</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="11435957170422811979" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://jornica.blogspot.com/2007/01/mail-from-application-express.html</feedburner:origLink></entry></feed>
