{"id":988,"date":"2013-05-27T11:54:42","date_gmt":"2013-05-27T09:54:42","guid":{"rendered":"http:\/\/oracle.malin.pl\/?p=988"},"modified":"2013-05-27T12:00:40","modified_gmt":"2013-05-27T10:00:40","slug":"bip-xml-clob-jako-zrodlo-danych-do-raportu-w-bipxml-publisher","status":"publish","type":"post","link":"https:\/\/oracle.malin.pl\/?p=988","title":{"rendered":"BIP &#8211; XML clob jako \u017ar\u00f3d\u0142o danych do raportu w BIP\/XML Publisher"},"content":{"rendered":"<p>Witam,<\/p>\n<p>Mamy tabl\u0119 kt\u00f3ra ma kolumn\u0119 CLOB. W kolumnie jest xml kt\u00f3ry mo\u017ce pos\u0142u\u017cy\u0107 nam do raportu w BIP( nie musimy robi\u0107 \u017cadnych sqli w xmlu mamy wszystkie dane do raportu).<br \/>\n1. Rejestrujemy \u017ar\u00f3d\u0142o danych jako pakiet pl\/sql<br \/>\n2. W \u017ar\u00f3dle danych mamy procedure kt\u00f3ra nam pobiera xmla i generuje go na wyjscie raportu.<\/p>\n<p>Informacje o pozosta\u0142ym setupu znajdziemy <a href=\"http:\/\/ora-apps.blogspot.com\/2007\/10\/pl-sql-stored-procedure-xml-publisher.html\" title=\"http:\/\/ora-apps.blogspot.com\/2007\/10\/pl-sql-stored-procedure-xml-publisher.html\">http:\/\/ora-apps.blogspot.com\/2007\/10\/pl-sql-stored-procedure-xml-publisher.html<\/a><\/p>\n<pre lang='SQL'> \r\nPROCEDURE xx_sra_gen_pdf(p_error_code               OUT NUMBER,\r\n                           p_error_msg                OUT VARCHAR2,\r\n                           p_payment_instruction_id   in number,\r\n                           p_payment_reference_number in number) IS\r\n    l_payment    CLOB;\r\n    l_xml        CLOB;\r\n    l_end        NUMBER;\r\n    l_clob_size  INTEGER;\r\n    l_offset     INTEGER := '1'; --idziemy od 1 znaku XMLa\r\n    l_chunk_size INTEGER := '28000'; -- wycinamy  28000 powinno by\u0107 32K \r\n--nie ma substb dlatego jest ich mniej\r\n  \r\n  BEGIN\r\n    FND_FILE.PUT_line(FND_FILE.LOG,\r\n                      'p_payment_instruction_id ' ||\r\n                      p_payment_instruction_id);\r\n    FND_FILE.PUT_line(FND_FILE.LOG,\r\n                      'p_payment_reference_number ' ||\r\n                      p_payment_reference_number);\r\n    --wlaczenie zabeczpieczen by moc odczytac dane z tabeli iby_xml_fd_pmt_1_0_v\r\n    cep_standard.init_security; -- inicjowanie zabezpieczen dla zobowizan.\r\n    SELECT XMLTYPE.getClobVal(payment)\r\n      INTO l_payment\r\n      FROM iby_xml_fd_pmt_1_0_v\r\n     WHERE payment_instruction_id = p_payment_instruction_id\r\n       AND payment_reference_number = p_payment_reference_number;\r\n  \r\n    l_clob_size := dbms_lob.getlength(l_payment);\r\n    -- FND_FILE.PUT_line(FND_FILE.LOG, 'Rozmiar l_clob_size ' || l_clob_size);\r\n  \r\n    WHILE (l_clob_size > 0) LOOP\r\n    \r\n   \r\n      l_xml := dbms_lob.substr(l_payment, l_chunk_size, l_offset);\r\n      l_end := instr(l_xml, '>', -1);\r\n      l_xml := dbms_lob.substr(l_payment, l_end, l_offset);\r\n      FND_FILE.PUT_line(FND_FILE.OUTPUT, l_xml);\r\n      l_chunk_size := l_end;\r\n      l_clob_size  := l_clob_size - l_chunk_size;\r\n      l_offset     := l_offset + l_chunk_size;\r\n    END LOOP;\r\n  EXCEPTION\r\n    WHEN TOO_MANY_ROWS THEN\r\n      DBMS_OUTPUT.put_line('TO_MANY_ROWS' || SQLERRM);\r\n    WHEN NO_DATA_FOUND THEN\r\n      DBMS_OUTPUT.put_line('NO_DATA_FOUND' || SQLERRM);\r\n    WHEN OTHERS THEN\r\n      DBMS_OUTPUT.put_line('EXCEPTION WHEN OTHERS THEN' || SQLERRM);\r\n  END xx_sra_gen_pdf;\r\n<\/pre>\n<p>Pozdrawiam,<br \/>\nLuko<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Witam, Mamy tabl\u0119 kt\u00f3ra ma kolumn\u0119 CLOB. W kolumnie jest xml kt\u00f3ry mo\u017ce pos\u0142u\u017cy\u0107 nam do raportu w BIP( nie musimy robi\u0107 \u017cadnych sqli w xmlu mamy wszystkie dane do raportu). 1. Rejestrujemy \u017ar\u00f3d\u0142o danych jako pakiet pl\/sql 2. W &hellip; <a href=\"https:\/\/oracle.malin.pl\/?p=988\">Czytaj dalej <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":37,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[88,54],"tags":[],"_links":{"self":[{"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=\/wp\/v2\/posts\/988"}],"collection":[{"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=988"}],"version-history":[{"count":5,"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=\/wp\/v2\/posts\/988\/revisions"}],"predecessor-version":[{"id":993,"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=\/wp\/v2\/posts\/988\/revisions\/993"}],"wp:attachment":[{"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oracle.malin.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}