<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8008288236641437966</id><updated>2012-02-16T19:42:42.395-08:00</updated><title type='text'>Oracle for beginner</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oracleforbeginner.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8008288236641437966/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oracleforbeginner.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>zakki djamin</name><uri>http://www.blogger.com/profile/11659777011331071733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_wXmBicAWPkg/SnlSKwDWSCI/AAAAAAAAAAo/Ew2JbCdzT4k/S220/za_sketch.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8008288236641437966.post-5242910826722475845</id><published>2009-06-25T20:09:00.000-07:00</published><updated>2009-06-28T23:28:31.531-07:00</updated><title type='text'>Making your report faster</title><content type='html'>First of all, i want to introduce an easy method to make our reporting faster then usual. This method is changing from view to piperow function, here is the example :&lt;br /&gt;we have view like this :&lt;br /&gt;&lt;br /&gt;CREATE VIEW v_table&lt;br /&gt;AS&lt;br /&gt;   SELECT *&lt;br /&gt;     FROM table_1 t1, table_2 t2, table_3 t3, table_4 t4&lt;br /&gt;    WHERE t1.id1 = t2.id1 AND t2.id2 = t3.id2 AND t3.id3 = t4.id3&lt;br /&gt;&lt;br /&gt;Sometimes, if we use this view to show alot of record (+1000), it will take a long time to process. But, we can make this process simple and need less resource by using a piperow function. Assume that we use several parameter for displaying the data.&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION adm_cc.fv_table (&lt;br /&gt;   i_t_tel69_submit_request_id   IN   NUMBER,&lt;br /&gt;   i_p_network_type_id           IN   NUMBER&lt;br /&gt;)&lt;br /&gt;   RETURN tb_v_table PIPELINED&lt;br /&gt;AS&lt;br /&gt;   TYPE c_ref_cursor IS REF CURSOR;&lt;br /&gt;&lt;br /&gt;   TYPE rc_ref_cursor IS RECORD (&lt;br /&gt;      t_tel69_request_id        NUMBER (12),&lt;br /&gt;      t_subscription_id         NUMBER (8),&lt;br /&gt;      t_nw_service_line_no_id   NUMBER (9),&lt;br /&gt;      network_id                NUMBER (8),&lt;br /&gt;      tipe_jaringan             VARCHAR2 (32 BYTE),&lt;br /&gt;      p_organization_id         NUMBER (3),&lt;br /&gt;      p_address_id              NUMBER (8),&lt;br /&gt;      pt_payment_type_id        NUMBER (2)&lt;br /&gt;   );&lt;br /&gt;&lt;br /&gt;   main_cursor   c_ref_cursor;&lt;br /&gt;   prc_work      rc_ref_cursor;&lt;br /&gt;   prc_obj       field_v_table;&lt;br /&gt;   ls_where      VARCHAR2 (4000);&lt;br /&gt;BEGIN&lt;br /&gt;   prc_obj := field_v_table (NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);&lt;br /&gt;   ls_where := NULL;&lt;br /&gt;&lt;br /&gt;   IF i_t_tel69_submit_request_id IS NOT NULL&lt;br /&gt;   THEN&lt;br /&gt;      ls_where :=&lt;br /&gt;            ls_where&lt;br /&gt;         || ' and t1.t_tel69_submit_request_id &gt;= '&lt;br /&gt;         || i_t_tel69_submit_request_id;&lt;br /&gt;   END IF;&lt;br /&gt;&lt;br /&gt;   IF i_p_network_type_id IS NOT NULL&lt;br /&gt;   THEN&lt;br /&gt;      ls_where :=&lt;br /&gt;            ls_where || ' and t2.p_network_type_id = ' || i_p_network_type_id;&lt;br /&gt;   END IF;&lt;br /&gt;&lt;br /&gt;   OPEN main_cursor FOR    'select * '&lt;br /&gt;                        || ' from table_1 t1, '&lt;br /&gt;                        || ' table_2 t2,'&lt;br /&gt;                        || ' table_3 t3,'&lt;br /&gt;                        || ' table_4 t4'&lt;br /&gt;                        || ' where '&lt;br /&gt;                        || ' t1.id1 = t2.id1 '&lt;br /&gt;                        || ' and t2.id2 = t3.id2 '&lt;br /&gt;                        || ' and t3.id3 = t4.id3 '&lt;br /&gt;                        || vwhere;&lt;br /&gt;&lt;br /&gt;   LOOP&lt;br /&gt;      FETCH main_cursor&lt;br /&gt;       INTO prc_work;&lt;br /&gt;&lt;br /&gt;      EXIT WHEN main_cursor%NOTFOUND;&lt;br /&gt;      prc_obj.t_tel69_submit_request_id := prc_work.t_tel69_submit_request_id;&lt;br /&gt;      prc_obj.t_subscription_request_id := prc_work.t_subscription_request_id;&lt;br /&gt;      prc_obj.t_nw_service_line_no_id := prc_work.t_nw_service_line_no_id;&lt;br /&gt;      prc_obj.network_id := prc_work.network_id;&lt;br /&gt;      prc_obj.tipe_jaringan := prc_work.tipe_jaringan;&lt;br /&gt;      prc_obj.p_organization_id := prc_work.p_organization_id;&lt;br /&gt;      prc_obj.p_address_id := prc_work.p_address_id;&lt;br /&gt;      prc_obj.pt_payment_type_id := prc_work.pt_payment_type_id;&lt;br /&gt;      PIPE ROW (prc_obj);&lt;br /&gt;   END LOOP;&lt;br /&gt;&lt;br /&gt;   RETURN;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;create type for handle the data,&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE TYPE "ADM_CC"."FIELD_V_TABLE" AS OBJECT (&lt;br /&gt;   t_tel69_submit_request_id   NUMBER (12),&lt;br /&gt;   t_subscription_request_id   NUMBER (8),&lt;br /&gt;   t_nw_service_line_no_id     NUMBER (9),&lt;br /&gt;   network_id                  NUMBER (8),&lt;br /&gt;   tipe_jaringan               VARCHAR2 (32 BYTE),&lt;br /&gt;   p_organization_id           NUMBER (3),&lt;br /&gt;   p_address_id                NUMBER (8),&lt;br /&gt;   pt_payment_type_id          NUMBER (2)&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE TYPE adm_cc.tb_v_table AS TABLE OF field_v_table;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8008288236641437966-5242910826722475845?l=oracleforbeginner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleforbeginner.blogspot.com/feeds/5242910826722475845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://oracleforbeginner.blogspot.com/2009/06/making-your-report-faster.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8008288236641437966/posts/default/5242910826722475845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8008288236641437966/posts/default/5242910826722475845'/><link rel='alternate' type='text/html' href='http://oracleforbeginner.blogspot.com/2009/06/making-your-report-faster.html' title='Making your report faster'/><author><name>zakki djamin</name><uri>http://www.blogger.com/profile/11659777011331071733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://1.bp.blogspot.com/_wXmBicAWPkg/SnlSKwDWSCI/AAAAAAAAAAo/Ew2JbCdzT4k/S220/za_sketch.jpg'/></author><thr:total>4</thr:total></entry></feed>
