<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for AMIS Technology Blog</title>
	<atom:link href="http://technology.amis.nl/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://technology.amis.nl</link>
	<description></description>
	<lastBuildDate>Fri, 12 Apr 2013 10:04:09 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>Comment on Weblogic Admin and Managed servers as a Windows service by theheatDK</title>
		<link>http://technology.amis.nl/2013/04/11/weblogic-admin-and-managed-servers-as-a-windows-service/#comment-7333</link>
		<dc:creator>theheatDK</dc:creator>
		<pubDate>Fri, 12 Apr 2013 10:04:09 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=22829#comment-7333</guid>
		<description><![CDATA[Hi Robert,
What is the reason for doing this? Why not just use the Node Manager and the standard Windows Service?
Regards Peter Lorenzen
http://theheat.dk]]></description>
		<content:encoded><![CDATA[<p>Hi Robert,<br />
What is the reason for doing this? Why not just use the Node Manager and the standard Windows Service?<br />
Regards Peter Lorenzen<br />
<a href="http://theheat.dk" rel="nofollow">http://theheat.dk</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on ADF DVT: Analyzing Financial Position of the European Football (Soccer) Leagues using Treemap by Luc Bors</title>
		<link>http://technology.amis.nl/2013/04/07/adf-dvt-analyzing-financial-position-of-the-european-football-soccer-leagues-using-treemap/#comment-7332</link>
		<dc:creator>Luc Bors</dc:creator>
		<pubDate>Mon, 08 Apr 2013 06:37:02 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=22788#comment-7332</guid>
		<description><![CDATA[nice !]]></description>
		<content:encoded><![CDATA[<p>nice !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Create an Excel-file with PL/SQL by gilles</title>
		<link>http://technology.amis.nl/2011/02/19/create-an-excel-file-with-plsql/#comment-7331</link>
		<dc:creator>gilles</dc:creator>
		<pubDate>Thu, 04 Apr 2013 13:12:02 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=10995#comment-7331</guid>
		<description><![CDATA[Hi Anton,
thanks a lot for this very usefull package.
I took time to add a personnal &quot;Cursor2Sheet&quot; procedure which works also on Oracle 10 (using XMLType in between

I Post it here incase it is of any use to anybody :

/************************************/
procedure cursor2sheet
  ( p_sql in sys_refcursor
  , p_column_headers boolean := true
  , p_directory varchar2 := null
  , p_filename varchar2 := null
  , p_sheet pls_integer := null
  , p_footer boolean := true
  )
is 

    ctx                         dbms_xmlgen.ctxHandle;
    tmpXml                      XMLType ;

    cursor cData is
    Select            
            t2.Column_Value.GetRootElement() ColName
            , ExtractValue(t2.Column_Value, &#039;node()&#039;) Value
    From    Table(XMLSequence(tmpXml)) t
            , Table(XMLSequence(Extract(t.Column_Value,&#039;/ROWSET/ROW/node()&#039;))) t2
    Order by RowNum ; 


    tsColHeaders                SYS.DBMS_DEBUG_VC2COLL := SYS.DBMS_DEBUG_VC2COLL();
    tsValues                    SYS.DBMS_DEBUG_VC2COLL := SYS.DBMS_DEBUG_VC2COLL();
    t_sheet                     pls_integer := 1;
    t_cur_row                   pls_integer := 1;
    colId                       pls_integer := 1;
    nColNumber                  pls_integer;
    n                           pls_integer;

    aTmpVal                     SYS.AnyData ;
    nNumVal                     Number ;
    tTSVal                      TimeStamp ;
    dDateVal                    Date ;
    sVarcharVal                 Varchar2(4000) ;                    
    bGotType                    boolean ;
    eTypeConvert                Exception ;
    eTypeDateFormat             Exception ;
    eTypeNonNumeric             Exception ;
    eTypeNotDefined             Exception ;
    pragma exception_init(eTypeConvert,-6502);
    pragma exception_init(eTypeDateFormat,-1830);
    pragma exception_init(eTypeNonNumeric,-1858); 

begin

    -- XML Creation from the sys_refcursor
    ctx := dbms_xmlgen.newContext(p_sql);
    -- this is important in order to get all the column headers, even if all data are null
    dbms_xmlgen.SetNullHandling(ctx, dbms_xmlgen.EMPTY_TAG);
    dbms_xmlgen.getXMLType(ctx, TmpXml);

    if p_sheet is null
    then
        new_sheet;
    end if;

    -- Load Columns and Values into Arrays
    Open cData ;
    Fetch cData bulk collect into tsColHeaders, tsValues ;
    Close cData ;

    -- get distinct headers
    tsColHeaders := set(tsColHeaders) ;
    -- get number of headers (of columns)
    nColNumber := tsColHeaders.count ;
    
    -- Create column headers if wanted
    If p_column_headers
    Then

        -- set headers into sheet
        For i in tsColHeaders.first .. tsColHeaders.last
        Loop
            cell(i, t_cur_row, tsColHeaders(i), p_fontId =&gt; get_font(&#039;Calibri&#039;, p_bold =&gt; true), p_sheet =&gt; t_sheet);
        End Loop ;
        t_cur_row := 2;

    End if;

    t_sheet := nvl(p_sheet, workbook.sheets.count());

    -- fill cells
    For i in tsValues.first .. tsValues.last
    Loop
        -- check if we must reset col to 1 and go to next line
        If  i &gt; nColNumber
            and mod(i ,nColNumber) = 1
        Then
            -- reset colId to 1 and go to next line
            colId := 1 ;
            t_cur_row := t_cur_row + 1;
        End If ;

        -- find the good type and insert into Cell  
        -- initialize &quot;checker&quot;      
        bGotType := false ;

        -- Number ?
        If Not bGotType
        Then
            Begin
                aTmpVal := Sys.AnyData.ConvertNumber(tsValues(i)) ;
                bGotType := true ;
                n := aTmpVal.GetNumber(nNumVal) ;
                -- load data into cell
                cell(colId, t_cur_row, nNumVal, p_sheet =&gt; t_sheet ) ;       

                -- if conversion fails
                Exception
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric
                Then
                    bGotType := false ;

            End ;
        End If ;

        -- TimeStamp ?
        If Not bGotType
        Then
            Begin
                aTmpVal := Sys.AnyData.ConvertTimestamp(tsValues(i)) ;
                bGotType := true ;
                n := aTmpVal.GetTimeStamp(tTSVal) ;
                -- load data into cell
                cell(colId, t_cur_row, to_date(tTSVal), p_sheet =&gt; t_sheet ) ;       

                -- if conversion fails
                Exception
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric
                Then
                    bGotType := false ;

            End ;
        End If ;

        -- Date ?
        If Not bGotType
        Then
            Begin
                aTmpVal := Sys.AnyData.ConvertDate(tsValues(i)) ;
                bGotType := true ;
                n := aTmpVal.GetDate(dDateVal) ;
                -- load data into cell
                cell(colId, t_cur_row, dDateVal, p_sheet =&gt; t_sheet ) ;       

                -- if conversion fails
                Exception
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric
                Then
                    bGotType := false ;

            End ;
        End If ;

        -- Varchar2 ?
        If Not bGotType
        Then
            Begin
                aTmpVal := Sys.AnyData.ConvertVarchar2(tsValues(i)) ;
                bGotType := true ;
                n := aTmpVal.GetVarchar2(sVarcharVal) ;
                -- load data into cell
                cell(colId, t_cur_row, sVarcharVal, p_sheet =&gt; t_sheet ) ;       

                -- if conversion fails
                Exception
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric
                Then
                    bGotType := false ;

            End ;
        End If ;

        -- unsupported type
        If Not bGotType
        Then
            raise eTypeNotDefined ;
        End If ;
            
        -- go to next col
        colId := colId + 1 ;

    End Loop ;

    If p_footer
    Then
        -- set footer
        cell(1, t_cur_row+2 , &#039;Generated &#039;&#124;&#124;sysdate&#124;&#124;&#039; by &#039;&#124;&#124;user, p_sheet =&gt; t_sheet ) ;
    End If ;

  if ( p_directory is not null and  p_filename is not null )
  then
    save( p_directory, p_filename );
  end if;

exception
    when eTypeNotDefined
    then
        raise_application_error(-20999,&#039;one data has an unsupported type&#039;, false);
        raise;
    when others
    then
        raise_application_error(-20999,&#039;Export to XLSX failed&#039;, true);

end;]]></description>
		<content:encoded><![CDATA[<p>Hi Anton,<br />
thanks a lot for this very usefull package.<br />
I took time to add a personnal &#8220;Cursor2Sheet&#8221; procedure which works also on Oracle 10 (using XMLType in between</p>
<p>I Post it here incase it is of any use to anybody :</p>
<p>/************************************/<br />
procedure cursor2sheet<br />
  ( p_sql in sys_refcursor<br />
  , p_column_headers boolean := true<br />
  , p_directory varchar2 := null<br />
  , p_filename varchar2 := null<br />
  , p_sheet pls_integer := null<br />
  , p_footer boolean := true<br />
  )<br />
is </p>
<p>    ctx                         dbms_xmlgen.ctxHandle;<br />
    tmpXml                      XMLType ;</p>
<p>    cursor cData is<br />
    Select<br />
            t2.Column_Value.GetRootElement() ColName<br />
            , ExtractValue(t2.Column_Value, &#8216;node()&#8217;) Value<br />
    From    Table(XMLSequence(tmpXml)) t<br />
            , Table(XMLSequence(Extract(t.Column_Value,&#8217;/ROWSET/ROW/node()&#8217;))) t2<br />
    Order by RowNum ; </p>
<p>    tsColHeaders                SYS.DBMS_DEBUG_VC2COLL := SYS.DBMS_DEBUG_VC2COLL();<br />
    tsValues                    SYS.DBMS_DEBUG_VC2COLL := SYS.DBMS_DEBUG_VC2COLL();<br />
    t_sheet                     pls_integer := 1;<br />
    t_cur_row                   pls_integer := 1;<br />
    colId                       pls_integer := 1;<br />
    nColNumber                  pls_integer;<br />
    n                           pls_integer;</p>
<p>    aTmpVal                     SYS.AnyData ;<br />
    nNumVal                     Number ;<br />
    tTSVal                      TimeStamp ;<br />
    dDateVal                    Date ;<br />
    sVarcharVal                 Varchar2(4000) ;<br />
    bGotType                    boolean ;<br />
    eTypeConvert                Exception ;<br />
    eTypeDateFormat             Exception ;<br />
    eTypeNonNumeric             Exception ;<br />
    eTypeNotDefined             Exception ;<br />
    pragma exception_init(eTypeConvert,-6502);<br />
    pragma exception_init(eTypeDateFormat,-1830);<br />
    pragma exception_init(eTypeNonNumeric,-1858); </p>
<p>begin</p>
<p>    &#8212; XML Creation from the sys_refcursor<br />
    ctx := dbms_xmlgen.newContext(p_sql);<br />
    &#8212; this is important in order to get all the column headers, even if all data are null<br />
    dbms_xmlgen.SetNullHandling(ctx, dbms_xmlgen.EMPTY_TAG);<br />
    dbms_xmlgen.getXMLType(ctx, TmpXml);</p>
<p>    if p_sheet is null<br />
    then<br />
        new_sheet;<br />
    end if;</p>
<p>    &#8212; Load Columns and Values into Arrays<br />
    Open cData ;<br />
    Fetch cData bulk collect into tsColHeaders, tsValues ;<br />
    Close cData ;</p>
<p>    &#8212; get distinct headers<br />
    tsColHeaders := set(tsColHeaders) ;<br />
    &#8212; get number of headers (of columns)<br />
    nColNumber := tsColHeaders.count ;</p>
<p>    &#8212; Create column headers if wanted<br />
    If p_column_headers<br />
    Then</p>
<p>        &#8212; set headers into sheet<br />
        For i in tsColHeaders.first .. tsColHeaders.last<br />
        Loop<br />
            cell(i, t_cur_row, tsColHeaders(i), p_fontId =&gt; get_font(&#8216;Calibri&#8217;, p_bold =&gt; true), p_sheet =&gt; t_sheet);<br />
        End Loop ;<br />
        t_cur_row := 2;</p>
<p>    End if;</p>
<p>    t_sheet := nvl(p_sheet, workbook.sheets.count());</p>
<p>    &#8212; fill cells<br />
    For i in tsValues.first .. tsValues.last<br />
    Loop<br />
        &#8212; check if we must reset col to 1 and go to next line<br />
        If  i &gt; nColNumber<br />
            and mod(i ,nColNumber) = 1<br />
        Then<br />
            &#8212; reset colId to 1 and go to next line<br />
            colId := 1 ;<br />
            t_cur_row := t_cur_row + 1;<br />
        End If ;</p>
<p>        &#8212; find the good type and insert into Cell<br />
        &#8212; initialize &#8220;checker&#8221;<br />
        bGotType := false ;</p>
<p>        &#8212; Number ?<br />
        If Not bGotType<br />
        Then<br />
            Begin<br />
                aTmpVal := Sys.AnyData.ConvertNumber(tsValues(i)) ;<br />
                bGotType := true ;<br />
                n := aTmpVal.GetNumber(nNumVal) ;<br />
                &#8212; load data into cell<br />
                cell(colId, t_cur_row, nNumVal, p_sheet =&gt; t_sheet ) ;       </p>
<p>                &#8212; if conversion fails<br />
                Exception<br />
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric<br />
                Then<br />
                    bGotType := false ;</p>
<p>            End ;<br />
        End If ;</p>
<p>        &#8212; TimeStamp ?<br />
        If Not bGotType<br />
        Then<br />
            Begin<br />
                aTmpVal := Sys.AnyData.ConvertTimestamp(tsValues(i)) ;<br />
                bGotType := true ;<br />
                n := aTmpVal.GetTimeStamp(tTSVal) ;<br />
                &#8212; load data into cell<br />
                cell(colId, t_cur_row, to_date(tTSVal), p_sheet =&gt; t_sheet ) ;       </p>
<p>                &#8212; if conversion fails<br />
                Exception<br />
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric<br />
                Then<br />
                    bGotType := false ;</p>
<p>            End ;<br />
        End If ;</p>
<p>        &#8212; Date ?<br />
        If Not bGotType<br />
        Then<br />
            Begin<br />
                aTmpVal := Sys.AnyData.ConvertDate(tsValues(i)) ;<br />
                bGotType := true ;<br />
                n := aTmpVal.GetDate(dDateVal) ;<br />
                &#8212; load data into cell<br />
                cell(colId, t_cur_row, dDateVal, p_sheet =&gt; t_sheet ) ;       </p>
<p>                &#8212; if conversion fails<br />
                Exception<br />
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric<br />
                Then<br />
                    bGotType := false ;</p>
<p>            End ;<br />
        End If ;</p>
<p>        &#8212; Varchar2 ?<br />
        If Not bGotType<br />
        Then<br />
            Begin<br />
                aTmpVal := Sys.AnyData.ConvertVarchar2(tsValues(i)) ;<br />
                bGotType := true ;<br />
                n := aTmpVal.GetVarchar2(sVarcharVal) ;<br />
                &#8212; load data into cell<br />
                cell(colId, t_cur_row, sVarcharVal, p_sheet =&gt; t_sheet ) ;       </p>
<p>                &#8212; if conversion fails<br />
                Exception<br />
                When eTypeConvert or eTypeDateFormat or eTypeNonNumeric<br />
                Then<br />
                    bGotType := false ;</p>
<p>            End ;<br />
        End If ;</p>
<p>        &#8212; unsupported type<br />
        If Not bGotType<br />
        Then<br />
            raise eTypeNotDefined ;<br />
        End If ;</p>
<p>        &#8212; go to next col<br />
        colId := colId + 1 ;</p>
<p>    End Loop ;</p>
<p>    If p_footer<br />
    Then<br />
        &#8212; set footer<br />
        cell(1, t_cur_row+2 , &#8216;Generated &#8216;||sysdate||&#8217; by &#8216;||user, p_sheet =&gt; t_sheet ) ;<br />
    End If ;</p>
<p>  if ( p_directory is not null and  p_filename is not null )<br />
  then<br />
    save( p_directory, p_filename );<br />
  end if;</p>
<p>exception<br />
    when eTypeNotDefined<br />
    then<br />
        raise_application_error(-20999,&#8217;one data has an unsupported type&#8217;, false);<br />
        raise;<br />
    when others<br />
    then<br />
        raise_application_error(-20999,&#8217;Export to XLSX failed&#8217;, true);</p>
<p>end;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Oracle SQL &#8211; Finding free adjacent seats in an airplane, using Subquery Factoring, Analytical Functions (LISTAGG and LEAD), Outer Join, PIVOT and good old INSTR by Anton Scheffer</title>
		<link>http://technology.amis.nl/2013/03/04/oracle-sql-finding-free-adjacent-seats-in-an-airplane-using-subquery-factoring-analytical-functions-listagg-and-lead-outer-join-pivot-and-good-old-instr/#comment-7330</link>
		<dc:creator>Anton Scheffer</dc:creator>
		<pubDate>Wed, 06 Mar 2013 08:00:55 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=21930#comment-7330</guid>
		<description><![CDATA[Nice! One slight remark, For your random barding passes the good old sample clause is much more suitable
insert into boarding_passes( seat_id, more_details )
select id, &#039;Seat was allocated&#039;
from seats sample( 35 )]]></description>
		<content:encoded><![CDATA[<p>Nice! One slight remark, For your random barding passes the good old sample clause is much more suitable<br />
insert into boarding_passes( seat_id, more_details )<br />
select id, &#8216;Seat was allocated&#8217;<br />
from seats sample( 35 )</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on ADF DVT Speed Date : Meeting The Hierarchy Viewer by sridharyerram</title>
		<link>http://technology.amis.nl/2013/03/01/adf-dvt-speed-date-meeting-the-hierarchy-viewer/#comment-7328</link>
		<dc:creator>sridharyerram</dc:creator>
		<pubDate>Sat, 02 Mar 2013 17:10:48 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=21895#comment-7328</guid>
		<description><![CDATA[wonderful article :) thanks alot for your post Kudos...!!!]]></description>
		<content:encoded><![CDATA[<p>wonderful article <img src='http://technology.amis.nl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  thanks alot for your post Kudos&#8230;!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Read an Excel xlsx with PL/SQL by Anton Scheffer</title>
		<link>http://technology.amis.nl/2013/01/19/read-a-excel-xlsx-with-plsql/#comment-7327</link>
		<dc:creator>Anton Scheffer</dc:creator>
		<pubDate>Tue, 19 Feb 2013 17:43:47 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=20612#comment-7327</guid>
		<description><![CDATA[@tuataneo This blog is called read Excel xlsx for a reason. Of course you can read xls, or every other format you can think of with plsql, but not with the code I provided here.]]></description>
		<content:encoded><![CDATA[<p>@tuataneo This blog is called read Excel xlsx for a reason. Of course you can read xls, or every other format you can think of with plsql, but not with the code I provided here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Read an Excel xlsx with PL/SQL by Anton Scheffer</title>
		<link>http://technology.amis.nl/2013/01/19/read-a-excel-xlsx-with-plsql/#comment-7326</link>
		<dc:creator>Anton Scheffer</dc:creator>
		<pubDate>Tue, 19 Feb 2013 17:40:27 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=20612#comment-7326</guid>
		<description><![CDATA[@regrbde. This code shows the result of every formula I tried, but please show your changes or mail it to me  scheffer@.....]]></description>
		<content:encoded><![CDATA[<p>@regrbde. This code shows the result of every formula I tried, but please show your changes or mail it to me  scheffer@&#8230;..</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Read an Excel xlsx with PL/SQL by tuataneo</title>
		<link>http://technology.amis.nl/2013/01/19/read-a-excel-xlsx-with-plsql/#comment-7325</link>
		<dc:creator>tuataneo</dc:creator>
		<pubDate>Tue, 19 Feb 2013 14:10:55 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=20612#comment-7325</guid>
		<description><![CDATA[Excellent, but when I try *xls file, I cannot read * xls file. How I read *xls file in PL-SQL? is it possible?
Thanks]]></description>
		<content:encoded><![CDATA[<p>Excellent, but when I try *xls file, I cannot read * xls file. How I read *xls file in PL-SQL? is it possible?<br />
Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Read an Excel xlsx with PL/SQL by regrbde</title>
		<link>http://technology.amis.nl/2013/01/19/read-a-excel-xlsx-with-plsql/#comment-7324</link>
		<dc:creator>regrbde</dc:creator>
		<pubDate>Tue, 19 Feb 2013 13:36:13 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=20612#comment-7324</guid>
		<description><![CDATA[Anton,

thanks for providing this great code for parsing XLSX files. I was looking a long time for exactly this.
The code works well, except if you use formula inside cells. 
I changed the code just a little to be able to handle and show formulas.

Are you interested in the changed package?


kind regards

Ralph]]></description>
		<content:encoded><![CDATA[<p>Anton,</p>
<p>thanks for providing this great code for parsing XLSX files. I was looking a long time for exactly this.<br />
The code works well, except if you use formula inside cells.<br />
I changed the code just a little to be able to handle and show formulas.</p>
<p>Are you interested in the changed package?</p>
<p>kind regards</p>
<p>Ralph</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Dear Java/JEE developer &#8211; why should you care about ADF? by Torben Lorentzen</title>
		<link>http://technology.amis.nl/2013/01/26/dear-javajee-developer-why-should-you-care-about-adf/#comment-7323</link>
		<dc:creator>Torben Lorentzen</dc:creator>
		<pubDate>Sat, 26 Jan 2013 09:37:29 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/?p=20786#comment-7323</guid>
		<description><![CDATA[Great article - will forward this to our developers.I was pleased to discover that this article also is a collection of great links and pointers - thanks! 

Torben.]]></description>
		<content:encoded><![CDATA[<p>Great article &#8211; will forward this to our developers.I was pleased to discover that this article also is a collection of great links and pointers &#8211; thanks! </p>
<p>Torben.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
