Advertisement
Guest User

Untitled

a guest
Jun 7th, 2019
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.76 KB | None | 0 0
  1.  
  2.  
  3. DECLARE
  4.     T_OUT_FILE UTL_FILE.FILE_TYPE;
  5.     T_BUFFER VARCHAR2(32767);
  6.     T_AMOUNT BINARY_INTEGER := 1000;
  7.     T_POS INTEGER := 1;
  8.     T_CLOB_LEN INTEGER;
  9.     P_DATA CLOB;
  10.     P_DIR VARCHAR2(100) := '<%=odiRef.getOption("lDir")%>';
  11.     P_FILE VARCHAR2(100) := '<%=odiRef.getOption("lFileName")%>';
  12. BEGIN
  13.     SELECT XMLSERIALIZE(
  14.         DOCUMENT XMLTYPE(XML_REQUEST) AS CLOB INDENT SIZE = 4
  15.     ) XML_RESULT INTO P_DATA FROM (
  16.         SELECT XMLELEMENT("soapenv:Envelope",
  17.             XMLATTRIBUTES(
  18.                 'http://schemas.xmlsoap.org/soap/envelope/' AS "xmlns:soapenv",
  19.                 'http://xmlns.oracle.com/apps/orderCapture/priceBook/priceBookService/types/' AS "xmlns:typ",
  20.                 'http://xmlns.oracle.com/apps/orderCapture/priceBook/priceBookService/' AS "xmlns:pric"
  21.             ),
  22.             XMLELEMENT("soapenv:Body",
  23.                 XMLELEMENT("typ:createPriceBook",
  24.                     XMLELEMENT("typ:priceBookHeader",
  25.                         XMLFOREST('MXN' AS "pric:CurrencyCode"),
  26.                         XMLFOREST('#DSD_CPQ.V_NAME_FPRICEBOOK' AS "pric:Name"),
  27.                         XMLFOREST(TCR.LISTADEPRECIO AS "pric:Description"),
  28.                         XMLFOREST('ACTIVE' AS "pric:StatusCode"), (
  29.                             SELECT XMLAGG(
  30.                                 XMLELEMENT("pric:PriceBookItem",
  31.                                     XMLFOREST(INVENTORY_ITEM_ID AS "pric:InvItemId"),
  32.                                     XMLELEMENT("pric:ListPrice", XMLATTRIBUTES('MXN' AS "currencyCode"), PRECIODETALLISTA),
  33.                                     XMLELEMENT("pric:PriceUOMCode", DEFAULT_UOM_CODE)
  34.                                 )
  35.                             ) FROM TMP_CPB_REQUEST
  36.                         )
  37.                     )
  38.                 )
  39.             )
  40.         ).GETCLOBVAL() XML_REQUEST
  41.         FROM TMP_CPB_REQUEST TCR WHERE TCR.PRODUCT_NUMBER = (
  42.             SELECT MIN(PRODUCT_NUMBER) FROM TMP_CPB_REQUEST
  43.         )
  44.     );
  45.    
  46.     T_CLOB_LEN := DBMS_LOB.GETLENGTH(P_DATA);
  47.     T_OUT_FILE := UTL_FILE.FOPEN(P_DIR,P_FILE, 'W', 32767);
  48.    
  49.     DBMS_OUTPUT.PUT_LINE(' LENGTH : ' || T_CLOB_LEN);
  50.     WHILE T_POS < T_CLOB_LEN LOOP
  51.         DBMS_OUTPUT.PUT_LINE(' T_POS BEFORE : ' || T_POS);
  52.         DBMS_LOB.READ(P_DATA, T_AMOUNT, T_POS, T_BUFFER);
  53.         UTL_FILE.PUT(T_OUT_FILE, T_BUFFER);
  54.         UTL_FILE.FFLUSH(T_OUT_FILE);
  55.         DBMS_OUTPUT.PUT_LINE(' T_POS AFTER : ' || T_POS);
  56.         T_POS := T_POS + T_AMOUNT;
  57.     END LOOP;
  58.    
  59.     DBMS_OUTPUT.PUT_LINE('COMPLETED WRITING');
  60.     UTL_FILE.FCLOSE(T_OUT_FILE);
  61.    
  62.     EXCEPTION
  63.         WHEN OTHERS THEN
  64.             IF(UTL_FILE.IS_OPEN(T_OUT_FILE))THEN
  65.                 UTL_FILE.FCLOSE(T_OUT_FILE);
  66.             END IF;
  67.         RAISE;
  68. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement