Posts

JVM Version on Oracle Database

Get JVM Property CREATE OR REPLACE FUNCTION getJava_property ( jProperty IN VARCHAR2) RETURN VARCHAR2 IS LANGUAGE JAVA name 'java.lang.System.getProperty(java.lang.String) return java.lang.String'; SELECT getjava_property('java.version') FROM dual;

Sum of Row and Col

Image
How to sum up , row and column in the template ?

Section - how to handle blank

Image
How to handle blank page, if no data in the xml.. Put a section break and add the code like following <?if@section:count(/DATA/LIST_INVOICES/INVOICES) = 0?>No invoices for this criteria<?end if?> You can handle the no data found like this.

Crosstab issue

Image
http://forums.oracle.com/forums/thread.jspa?messageID=3344649 In order to get the all months,the for-each should have been put on the whole xml, rather than , the current group. the current group might be missing some month value in the xml.

Chart : Different color based on cell value

Image
http://forums.oracle.com/forums/thread.jspa?messageID=3343920 http://forums.oracle.com/forums/thread.jspa?threadID=871513 This is little tricky, but do able.

Huge data

http://forums.oracle.com/forums/thread.jspa?messageID=1248093&#1248093 The XSLT engine we have is scalable ie it can handle umlimited XML input. Biggest we have gone to so far is ~6Gb of data (3million records) which generated ~100K pages in a just under an hour. Thats a rough guide for large docs, for through put we hava a customer pushing thru 20,000 docs per hour (4-10 pages) on a 4 CPU box using ~10% of CPU resources at peak. So were scalable and fast .... this is all configurable and its going to require you to work out a balance between and resources.

Pipelined functions in BIP

http://forums.oracle.com/forums/thread.jspa?messageID=2820319&#2820319 Wanted to use the pl/sql package in datatemplate ? Yes, we can use them in different ways, by using the oracle table function or Pipelined Table Functions. Pl/sql package will return the collection variable , which you can cast it as table in the query.. sample create type numset_t as table of number; / create function f1(x number) return numset_t pipelined is begin for i in 1..x loop pipe row(i); end loop; return; end; / select * from table(f1(3)); COLUMN_VALUE 1 2 3 In the datatemplate , you can just call the select * from table(f1(3)); Or even the parameter can be passed to the function, in which your entire logic can be written, which will return the collection variable. Datatemplate wil be more powerful , when used like this,