Unwanted using utl_file.put_line output result

I don't know how the white space between the PRTA_NEW_IDN_REC. PRTA_TO_IDN and. PRTA_TRANS_ID_REC QUANTITY. Thank you for your help in advance.



UTL_FILE. Put_line (f_ID_MAINT, RPAD (NVL(PRTA_TRANS_ID_REC. COMPTE,' '), 5,' ') |)
RPAD (NVL(PRTA_NEW_IDN_REC. PRTA_TO_IDN,' '), 6,' ') |
TO_CHAR (PRTA_TRANS_ID_REC. QUANTITY, ' 099999')
);


output

A0012112010 000002
A0014112010 000001
A0023112010 000002
A0025112010 000001
A0030112010 000001

Expected result:

A0101112010000002
D1055322779000005
D1055322503000008
D1055322547000009

question isn't put_line, it has to do with your mask to_char.

If you do nothing, you will get a space for positive numbers and a '-' for negative.
You must add 'fm' in front of the initial '0', and the space is removed.
You can find the masks of format in SQL language reference manual.
http://download.Oracle.com/docs/CD/E11882_01/server.112/e17118/sql_elements004.htm#SQLRF00216

--------
Sybrand Bakker
Senior Oracle DBA

Tags: Database

Similar Questions

  • PLSQL utl_file.put_line error after the script running 8 ' e

    Hello
    I wrote a script to export the results of a query to an external file using utl_file.put_line. the script works very well for the first 8 hours.

    anonymous block filled
    anonymous block filled
    anonymous block filled
    anonymous block filled
    anonymous block filled
    anonymous block filled
    anonymous block filled
    anonymous block filled

    When I run the same script for the 9th time, I got an error message

    Error from the 1 in the command line:
    DECLARE
    OutFile utl_file.file_type;
    TYPE rc_a IS REF CURSOR;
    l_rc_a rc_a;
    TELLER_1 INTEGER: = 3;
    ctt1 varchar (2000);
    AA varchar (2000);
    BEGIN
    FOR TELLER_1 IN 3.9

    LOOP

    OutFile: = utl_file.fopen ('DAT_DIR', 'A1_W' |) TELLER_1 | "_KANS. TXT', 'w');

    ctt1: = '

    SELECT
    WORP_XW | ''|''||
    D | ''|''||
    V5_AANTAL_KANS | ''|''||
    V5_AVG_KANS | ''|''||
    V6_AANTAL_KANS | ''|''||
    V6_AVG_KANS | ''|''||
    V7_AANTAL_KANS | ''|''||
    V7_AVG_KANS | ''|''||
    V8_AANTAL_KANS | ''|''||
    V8_AVG_KANS | ''|''||
    V9_AANTAL_KANS | ''|''||
    V9_AVG_KANS
    Of
    (
    Select D, V5_AANTAL_KANS, V5_AVG_KANS, V6_AANTAL_KANS, WORP_XW, ROUND(V6_AVG_KANS,6) V6_AVG_KANS ROUND(V5_AVG_KANS,6),
    V7_AANTAL_KANS, V7_AVG_KANS, V8_AANTAL_KANS, ROUND(V8_AVG_KANS,6) V8_AVG_KANS ROUND(V7_AVG_KANS,6),
    V9_AANTAL_KANS, ROUND(V9_AVG_KANS,6) V9_AVG_KANS
    Of
    (
    Select WORP_XW, D, KAN,
    case VERSIE_VX when "V5" then 5 when "V6" when then 6 "V7" when then 7 "V8" when then 8 "V9" then 9 end as VERSIE_VX
    of VMENS. TOEVAL_BASIS_W' | TELLER_1 | »

    )
    pivot)
    AVG (KAN) as AVG_KANS,
    COUNT (KAN) AS AANTAL_KANS
    by VERSIE_VX (V5, V6, V7, V8, V9 9 8 7 6 5)
    )
    ORDER BY D
    )';

    L_rc_a OPEN FOR ctt1;
    LOOP
    EXTRACTION l_rc_a IN aa;
    EXIT WHEN l_rc_a % NOTFOUND;
    -dbms_output.put_line (aa);
    UTL_FILE.put_line (OutFile, aa, TRUE);
    END LOOP;

    END LOOP;
    UTL_FILE.fclose (outfile);
    END;
    Error report:
    ORA-29283: Ongeldige bestandsbewerking/ORA-29283: invalid file operation
    ORA-06512: in 'SYS. UTL_FILE", regel 536
    ORA-29283: Ongeldige bestandsbewerking/ORA-29283: invalid file operation
    ORA-06512: in rule 14
    29283 00000 - "invalid file operation.
    * Cause: An attempt was made to read from a file or a directory which is
    not exist, or the file or directory access was denied by the
    Operating system.
    * Action: Check access privileges to the file and directory on the file system
    and if reading, check that the file exists.


    The same is true when I use another script writes the results of a query to an external file. Y at - there someone who can tell me why I have an error message after running 8 ' e of this script.

    With respect,
    Michiel van Mens

    The second time through the outer loop, it will fail because you try to open a file that is already open. Move your utl_file.fclose statement of before the last "END LOOP '.

  • with utl_file - save the result in a txt file.

    PLS, help...

    I have a question that I used to use SQL PLUS, using the COIL and it worked very well.

    Now, I'm changing it to pl/sql, which I'll have to use UTL_FILE.

    The problem is that I need to create a file with a pre defined provision.

    Can help you me pls?

    Don't have much experience with UTL_FILE

    Prompt 'Periodo MON-YY:'
    Define periodo = '&periodo'
    SPOOL C:\Users\gtorrens\Documents\GLAudit_2014_2015\gl_audit-&&periodo..txt
    set termout off
    set echo off
    set verify off
    set feedback off
    set serveroutput off
    set head off
    set pagesize 0
    set linesize 608
    set timing off 
    SELECT /*+
             INDEX(GCC GL_CODE_COMBINATIONS_U1)
             INDEX(GJB GL_JE_BATCHES_U1)
             INDEX(FUS FND_USER_U1)
             INDEX(GJL GL_JE_LINES_U1)*/
              rpad(SUBSTR (gcc.segment1, 1, 2),2,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (SUBSTR (emp.de_sgm, 1, 70), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),70,' ')
               || rpad(SUBSTR (gjs.user_je_source_name, 1, 20),20,' ')
               || lpad(DECODE (NVL (gjl.entered_dr, 0)
                        , 0, DECODE (NVL (gjl.accounted_dr, 0), 0, 'C', 'D')
                        , 'D'),1,' ')
               || lpad(TO_CHAR (gjh.default_effective_date, 'DD-MON-YY'),9,' ')
               || lpad(TO_CHAR (gjh.posted_date, 'DD-MON-YY'),9,' ')
               || lpad(SUBSTR (gcc.segment2, 1, 9),9,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (SUBSTR (cta.de_sgm, 1, 100), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),100,' ')
               || rpad(SUBSTR (cta.tp_sgm, 1, 10),10,' ')
               || lpad(TO_CHAR (NVL (gjl.accounted_dr, 0),'999G999G999G999G999G990D00'),38,' ')
               || lpad(TO_CHAR (NVL (gjl.accounted_cr, 0),'999G999G999G999G999G990D00'),38,' ')
               || lpad(SUBSTR (gjh.currency_code, 1, 5),5,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (REPLACE (SUBSTR (gjl.description, 1, 150), '|', '@'), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),150,' ')
               || rpad(gjb.last_updated_by,15,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (SUBSTR (gjb.name, 1, 100), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),100,' ')
               || lpad(SUBSTR (fus.user_name, 1, 30),30, ' ')
                 linha_utl
          FROM gl_je_lines gjl
             , gl_je_headers gjh
             , gl_code_combinations gcc
             , gl_je_sources gjs
             , gl_je_batches gjb
             , (SELECT 'EMPRESA' id_sgm
                     , a.flex_value cd_sgm
                     , b.description de_sgm
                     , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                             , 'L', 'Passivo'
                             , 'A', 'Ativo'
                             , 'E', 'Despesa'
                             , 'O', 'Pat.Liq'
                             , 'R', 'Receita')
                         tp_sgm
                  FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                 WHERE a.flex_value_set_id = 1015197
                   AND a.flex_value_id = b.flex_value_id
                   AND b.language = 'PTB') emp
             , ( SELECT 'CONTA' id_sgm
                       , a.flex_value cd_sgm
                       , b.description de_sgm
                       , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                               , 'L', 'Passivo'
                               , 'A', 'Ativo'
                               , 'E', 'Despesa'
                               , 'O', 'Pat.Liq'
                               , 'R', 'Receita')
                           tp_sgm
                    FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                   WHERE a.flex_value_set_id = 1015237
                     AND a.flex_value_id = b.flex_value_id
                     AND b.language = 'PTB') cta
             , fnd_user fus
         WHERE gjl.je_header_id = gjh.je_header_id
           AND gjb.je_batch_id = gjh.je_batch_id
           AND gjs.je_source_name = gjh.je_source
           AND gjh.ledger_id = 2041 -- p_nr_livro
           AND gjh.actual_flag = 'A'
           AND gjh.period_name = upper('&&periodo') -- 'JAN-14'
           AND gcc.code_combination_id = gjl.code_combination_id
           AND gcc.segment1 IN ('01', '12', '13', '14', '05', '16', '18')
           AND emp.id_sgm = 'EMPRESA'
           AND emp.cd_sgm = gcc.segment1
           AND cta.id_sgm = 'CONTA'
           AND cta.cd_sgm = gcc.segment2
           AND fus.user_id = gjb.last_updated_by
        --  AND rownum<1001
           ;
        SELECT /*+
             INDEX(GCC GL_CODE_COMBINATIONS_U1)
             INDEX(GJB GL_JE_BATCHES_U1)
             INDEX(FUS FND_USER_U1)
             INDEX(GJL GL_JE_LINES_U1)*/
                    (lpad(TO_CHAR (NVL (SUM(gjl.accounted_dr), 0),'999G999G999G999G999G990D00'),268,' ')) /*VL_DEBITO*/
             ||' '||(lpad(TO_CHAR (NVL (SUM(gjl.accounted_cr), 0),'999G999G999G999G999G990D00'),37 ,' ')) /*VL_CREDITO*/
             ||' '|| TO_CHAR (COUNT (*)) soma /*qtd_reg*/
          FROM gl_je_lines gjl
             , gl_je_headers gjh
             , gl_code_combinations gcc
             , gl_je_sources gjs
             , gl_je_batches gjb
             , (SELECT 'EMPRESA' id_sgm
                     , a.flex_value cd_sgm
                     , b.description de_sgm
                     , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                             , 'L', 'Passivo'
                             , 'A', 'Ativo'
                             , 'E', 'Despesa'
                             , 'O', 'Pat.Liq'
                             , 'R', 'Receita')
                         tp_sgm
                  FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                 WHERE a.flex_value_set_id = 1015197
                   AND a.flex_value_id = b.flex_value_id
                   AND b.language = 'PTB') emp
             , ( SELECT 'CONTA' id_sgm
                       , a.flex_value cd_sgm
                       , b.description de_sgm
                       , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                               , 'L', 'Passivo'
                               , 'A', 'Ativo'
                               , 'E', 'Despesa'
                               , 'O', 'Pat.Liq'
                               , 'R', 'Receita')
                           tp_sgm
                    FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                   WHERE a.flex_value_set_id = 1015237
                     AND a.flex_value_id = b.flex_value_id
                     AND b.language = 'PTB') cta
             , fnd_user fus
         WHERE gjl.je_header_id = gjh.je_header_id
           AND gjb.je_batch_id = gjh.je_batch_id
           AND gjs.je_source_name = gjh.je_source
           AND gjh.ledger_id = 2041
           AND gjh.actual_flag = 'A'
           AND gjh.period_name = '&&periodo' -- 'JAN-14'
           AND gcc.code_combination_id = gjl.code_combination_id
           AND gcc.segment1 IN ('01', '12', '13', '14', '05', '16', '18')
           AND emp.id_sgm = 'EMPRESA'
           AND emp.cd_sgm = gcc.segment1
           AND cta.id_sgm = 'CONTA'
           AND cta.cd_sgm = gcc.segment2
           AND fus.user_id = gjb.last_updated_by
          -- and rownum<1001;
                  
    spool off;
    
    

    I did something like that, when I turned it in a procedure...

    create or replace PROCEDURE       XXTVGAUDIT (o_return_err      OUT VARCHAR2
                                                  , o_return_code     OUT NUMBER
                                                  , p_period_name  IN     VARCHAR2
                                                  , p_nr_livro     IN     NUMBER)
    IS
      CURSOR c1
      IS
    SELECT
              rpad(SUBSTR (gcc.segment1, 1, 2),2,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (SUBSTR (emp.de_sgm, 1, 70), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),70,' ')
               || rpad(SUBSTR (gjs.user_je_source_name, 1, 20),20,' ')
               || lpad(DECODE (NVL (gjl.entered_dr, 0)
                        , 0, DECODE (NVL (gjl.accounted_dr, 0), 0, 'C', 'D')
                        , 'D'),1,' ')
               || lpad(TO_CHAR (gjh.default_effective_date, 'DD-MON-YY'),9,' ')
               || lpad(TO_CHAR (gjh.posted_date, 'DD-MON-YY'),9,' ')
               || lpad(SUBSTR (gcc.segment2, 1, 9),9,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (SUBSTR (cta.de_sgm, 1, 100), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),100,' ')
               || rpad(SUBSTR (cta.tp_sgm, 1, 10),10,' ')
               || lpad(TO_CHAR (NVL (gjl.accounted_dr, 0),'999G999G999G999G999G990D00'),38,' ')
               || lpad(TO_CHAR (NVL (gjl.accounted_cr, 0),'999G999G999G999G999G990D00'),38,' ')
               || lpad(SUBSTR (gjh.currency_code, 1, 5),5,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (REPLACE (SUBSTR (gjl.description, 1, 150), '|', '@'), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),150,' ')
               || rpad(gjb.last_updated_by,15,' ')
               || rpad(TRANSLATE (
                    CONVERT (
                    TRANSLATE (
                        REPLACE(REPLACE (REPLACE (SUBSTR (gjb.name, 1, 100), CHR (13), ''), CHR (10), ''),CHR (9), '')
                       ,'??????????????????¡§©³º ¨¬²¹¢ª®´»£µ«¼!@#$%*()_+=[]{}/\?:<>|ãÃõÕçÇüÜâÂêÊôÔáÁàÀéÉíÍóÓúÚñшÞ'
                       ,'                                                             aAoOcCuUaAeEoOaAaAeEiIoOuUnN  ')
                   ,'US7ASCII'
                   ,'WE8ISO8859P1') ,'?',' '),100,' ')
               || lpad(SUBSTR (fus.user_name, 1, 30),30, ' ')
                 linha_utl
          FROM gl_je_lines gjl
             , gl_je_headers gjh
             , gl_code_combinations gcc
             , gl_je_sources gjs
             , gl_je_batches gjb
             , (SELECT 'EMPRESA' id_sgm
                     , a.flex_value cd_sgm
                     , b.description de_sgm
                     , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                             , 'L', 'Passivo'
                             , 'A', 'Ativo'
                             , 'E', 'Despesa'
                             , 'O', 'Pat.Liq'
                             , 'R', 'Receita')
                         tp_sgm
                  FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                 WHERE a.flex_value_set_id = 1015197
                   AND a.flex_value_id = b.flex_value_id
                   AND b.language = 'PTB') emp
             , ( SELECT 'CONTA' id_sgm
                       , a.flex_value cd_sgm
                       , b.description de_sgm
                       , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                               , 'L', 'Passivo'
                               , 'A', 'Ativo'
                               , 'E', 'Despesa'
                               , 'O', 'Pat.Liq'
                               , 'R', 'Receita')
                           tp_sgm
                    FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                   WHERE a.flex_value_set_id = 1015237
                     AND a.flex_value_id = b.flex_value_id
                     AND b.language = 'PTB') cta
             , fnd_user fus
         WHERE gjl.je_header_id = gjh.je_header_id
           AND gjb.je_batch_id = gjh.je_batch_id
           AND gjs.je_source_name = gjh.je_source
           AND gjh.ledger_id = 2041 -- p_nr_livro
           AND gjh.actual_flag = 'A'
           AND gjh.period_name = upper('null') -- 'JAN-14'
           AND gcc.code_combination_id = gjl.code_combination_id
           AND gcc.segment1 IN ('01', '12', '13', '14', '05', '16', '18')
           AND emp.id_sgm = 'EMPRESA'
           AND emp.cd_sgm = gcc.segment1
           AND cta.id_sgm = 'CONTA'
           AND cta.cd_sgm = gcc.segment2
           AND fus.user_id = gjb.last_updated_by
          AND rownum<1001;
          
      CURSOR c2
      IS
        SELECT /*+
             INDEX(GCC GL_CODE_COMBINATIONS_U1)
             INDEX(GJB GL_JE_BATCHES_U1)
             INDEX(FUS FND_USER_U1)
             INDEX(GJL GL_JE_LINES_U1)*/
                    (lpad(TO_CHAR (NVL (SUM(gjl.accounted_dr), 0),'999G999G999G999G999G990D00'),268,' ')) /*VL_DEBITO*/
             ||' '||(lpad(TO_CHAR (NVL (SUM(gjl.accounted_cr), 0),'999G999G999G999G999G990D00'),37 ,' ')) /*VL_CREDITO*/
             ||' '|| TO_CHAR (COUNT (*)) soma /*qtd_reg*/
          FROM gl_je_lines gjl
             , gl_je_headers gjh
             , gl_code_combinations gcc
             , gl_je_sources gjs
             , gl_je_batches gjb
             , (SELECT 'EMPRESA' id_sgm
                     , a.flex_value cd_sgm
                     , b.description de_sgm
                     , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                             , 'L', 'Passivo'
                             , 'A', 'Ativo'
                             , 'E', 'Despesa'
                             , 'O', 'Pat.Liq'
                             , 'R', 'Receita')
                         tp_sgm
                  FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                 WHERE a.flex_value_set_id = 1015197
                   AND a.flex_value_id = b.flex_value_id
                   AND b.language = 'PTB') emp
             , ( SELECT 'CONTA' id_sgm
                       , a.flex_value cd_sgm
                       , b.description de_sgm
                       , DECODE (SUBSTR (a.compiled_value_attributes, 5, 1)
                               , 'L', 'Passivo'
                               , 'A', 'Ativo'
                               , 'E', 'Despesa'
                               , 'O', 'Pat.Liq'
                               , 'R', 'Receita')
                           tp_sgm
                    FROM fnd_flex_values_vl a, fnd_flex_values_tl b
                   WHERE a.flex_value_set_id = 1015237
                     AND a.flex_value_id = b.flex_value_id
                     AND b.language = 'PTB') cta
             , fnd_user fus
         WHERE gjl.je_header_id = gjh.je_header_id
           AND gjb.je_batch_id = gjh.je_batch_id
           AND gjs.je_source_name = gjh.je_source
           AND gjh.ledger_id = 2041
           AND gjh.actual_flag = 'A'
           AND gjh.period_name = 'null' -- 'JAN-14'
           AND gcc.code_combination_id = gjl.code_combination_id
           AND gcc.segment1 IN ('01', '12', '13', '14', '05', '16', '18')
           AND emp.id_sgm = 'EMPRESA'
           AND emp.cd_sgm = gcc.segment1
           AND cta.id_sgm = 'CONTA'
           AND cta.cd_sgm = gcc.segment2
           AND fus.user_id = gjb.last_updated_by
           
           and rownum<1001;
      w_ind_erro     NUMBER;
      w_erro_geral   EXCEPTION;
    
    
      w_msg_erro     VARCHAR2 (240);
      w_linha        VARCHAR2 (1000);
    
    
      w_nm_arq_utl   UTL_FILE.file_type;
      w_nm_arq_utl_r UTL_FILE.file_type;
    
    
      w_nm_dir_dad   VARCHAR2 (80);
      --w_nm_int_dir_dad VARCHAR2 (80);
      --w_nm_arq_dad   VARCHAR2 (80);
      w_nm_arq_dad_aux VARCHAR2 (80);
      w_nm_arq_dad_qtd VARCHAR2 (80);
      
      P_DIRETORIO VARCHAR2(200) := '/tmp';
      P_ARQUIVO   VARCHAR2(200) := 'Desliga_mainframe_indices_economicos.csv';
      
      W_DIRETORIO VARCHAR2(50) := P_DIRETORIO;
      W_ARQUIVO   VARCHAR2(50) := P_ARQUIVO;
    
    
      w_qtd_reg      NUMBER;
    
    
      -- -----------------------------------------------
    
      PROCEDURE pr_abre_txt --(p_nm_dir IN VARCHAR2, p_nm_arq IN VARCHAR2, p_tp_abertura IN VARCHAR2)
      IS
      BEGIN
        w_nm_arq_utl := UTL_FILE.fopen ( W_DIRETORIO, W_ARQUIVO, 'W');
      EXCEPTION
        WHEN UTL_FILE.invalid_path THEN
          UTL_FILE.fclose (w_nm_arq_utl);
          raise_application_error (-20504, 'ERRO NA ABERTURA DO ARQUIVO: Caminho Invalido');
        WHEN UTL_FILE.invalid_mode THEN
          UTL_FILE.fclose (w_nm_arq_utl);
          raise_application_error (-20504, 'ERRO NA ABERTURA DO ARQUIVO: Modo Invalido');
        WHEN UTL_FILE.invalid_filehandle THEN
          UTL_FILE.fclose (w_nm_arq_utl);
          raise_application_error (-20504, 'ERRO NA ABERTURA DO ARQUIVO: Nome Arquivo Invalido');
        WHEN UTL_FILE.invalid_operation THEN
          UTL_FILE.fclose (w_nm_arq_utl);
          raise_application_error (-20504, 'ERRO NA ABERTURA DO ARQUIVO: Operacao Invalida');
        WHEN UTL_FILE.read_error THEN
          UTL_FILE.fclose (w_nm_arq_utl);
          raise_application_error (-20504, 'ERRO NA ABERTURA DO ARQUIVO: Erro Leitura');
        WHEN UTL_FILE.write_error THEN
          UTL_FILE.fclose (w_nm_arq_utl);
          raise_application_error (-20504, 'ERRO NA ABERTURA DO ARQUIVO: Erro Escrita');
        WHEN UTL_FILE.internal_error THEN
          UTL_FILE.fclose (w_nm_arq_utl);
          raise_application_error (-20504, 'ERRO NA ABERTURA DO ARQUIVO: Erro Interno');
      END pr_abre_txt;
    
    
      -- ------------------------------------------------------
      PROCEDURE pr_grava_txt (p_de_msg IN VARCHAR2)
      IS
      BEGIN
        UTL_FILE.put_line (w_nm_arq_utl, p_de_msg);
      EXCEPTION
        WHEN UTL_FILE.invalid_path THEN
          raise_application_error (-20503, 'ERRO AO GRAVAR: Caminho Invalido');
        WHEN UTL_FILE.invalid_mode THEN
          raise_application_error (-20503, 'ERRO AO GRAVAR: Modo Invalido');
        WHEN UTL_FILE.invalid_filehandle THEN
          raise_application_error (-20503, 'ERRO AO GRAVAR: Nome Arquivo Invalido');
        WHEN UTL_FILE.invalid_operation THEN
          raise_application_error (-20503, 'ERRO AO GRAVAR: Operacao Invalida');
        WHEN UTL_FILE.read_error THEN
          raise_application_error (-20503, 'ERRO AO GRAVAR: Erro Leitura');
        WHEN UTL_FILE.write_error THEN
          raise_application_error (-20503, 'ERRO AO GRAVAR: Erro Escrita');
        WHEN UTL_FILE.internal_error THEN
          raise_application_error (-20503, 'ERRO AO GRAVAR: Erro Interno');
      END pr_grava_txt;
    
    
      -- ------------------------------------------------------
      PROCEDURE pr_fecha_txt
      IS
      BEGIN
        UTL_FILE.fclose (w_nm_arq_utl);
      EXCEPTION
        WHEN OTHERS THEN
          raise_application_error (-20501, 'ERRO NO FECHAMENTO ARQUIVO DE LOG');
      END pr_fecha_txt;
      -- --------------------------------------------------------------------------------------------------
      BEGIN
      --PR_ABRE_TXT (W_NM_DIR_SQL, W_NM_ARQ_DAD ,'w');
      pr_abre_txt ( W_DIRETORIO, W_ARQUIVO, 'w');
    
    
      w_nm_arq_utl_r := UTL_FILE.fopen ( w_nm_arq_utl, w_nm_arq_dad_qtd, 'w');
     -- w_qtd_reg   := 0;
    
    
     /* FOR cur2 IN c2
      LOOP
        w_linha     := cur2.soma;
        pr_grava_txt (w_linha);
    
    
        w_qtd_reg   := w_qtd_reg + 1;
    
    
        --IF MOD (w_qtd_reg, 100000) = 0 THEN
          UTL_FILE.put_line (w_nm_arq_utl_r, 'Qtd. de linhas geradas = ' w_qtd_reg w_linha );
        --END IF;
      END LOOP;
    
    
     -- UTL_FILE.put_line (w_nm_arq_utl_r, 'Final de Qtd. de linhas geradas = ' || w_qtd_reg);
      UTL_FILE.fclose (w_nm_arq_utl_r);
      --*/
      -- --------------------------------------------------------------------------------------------------
      pr_fecha_txt;
      --
      -- --------------------------------------------------------------------------------------------------
    
    
    
    
    
    
    EXCEPTION
      WHEN w_erro_geral THEN
        raise_application_error (-20501, 'Parada por motivo de Erros na execução.');
    --
    END XXTVGAUDIT;
    

    Oracle Directory object is not OS directory. It is a definition saying Oracle which OS directory to use. When Oracle run

    v_file: = UTL_FILE.fopen ('TMP_DIR', 'output.log', 'W');

    He goes to the data dictionary and:

    1. it checks the Oracle directory object exists tmp_dir

    2. If the Oracle user is allowed to create files on this object directory Oracle (see WRITING privilege granted I posted)

    3 reflects the object of Oracle TMP_DIR for OS directory/tmp directory

    4 creates the file /tmp/output.og owned by OS oracle user with the appropriate permissions on the database server (assuming that OS directory Oracle Directory object points on exists and oracle OS user can create files there).

    Remember, most of the time the OS Oracle user created files permissions are such that the 'others' can even read.

    SY.

  • How to use UTL_FILE to print a JPG image in a CLOB

    I'm using Oracle 11.g.  I have an Oracle Apex application that generates automated emails. In the Apex, the user inserts a JPG image in a rich text field. This image is stored in a CLOB field. When it's time to send emails, Apex calls a stored procedure that reads the JPG image and stores it in a local variable called l_image_clob. The procedure of sending the embedded image with the rest of the body by e-mail to a list of users. (Note: this an embedded image and it is not an attachment). It all works very well.

    Now, I try to save the JPG image content stored in the l_image_clob variable in a JPG file on the server. The server is located on a Windows 7 platform.  The following code generates a file named correctly and the size of the file is correct, but it is not readable by the system. I get the error "is not a valid bitmap file" when I try to open it with Microsoft Paint. The image in the clob data looks something like: / 9j/4AAQSkZJRgABAgEAZABkAAD/4RXaRXhpZgAATU0AKg (a bunch more data) SSSSUpJJJJSkkkklKSSSSU / / Z

    How do I use utl_file to save the JPG image bank in the l_image_clob variable to a valid JPG file?

    -- Here's the code which creates the file that is "not a valid bitmap file"
      -- Create a file based on the content of l_image_clob
      l_image_filename := 'image_' || p_event_pkey || '_' || i ||
      '.' || l_image_ext;
      l_file_handle := utl_file.fopen(l_dirname , l_image_filename, 'wb');
      -- wb is write byte. This returns file handle
      <<inner_loop>>
      for i in 1 .. ceil( length( l_image_clob ) / chnksz )
      loop
      utl_file.put_raw( l_file_handle,
      utl_raw.cast_to_raw( substr( l_image_clob, (i-1) * chnksz + 1, chnksz )));
      utl_file.fflush(l_file_handle);
      end loop inner_loop;
      utl_file.fclose(l_file_handle);

    procedure clobbase642file (p_clob clob, p_dir varchar2, varchar2 p_filename)

    is

    t_buffer varchar2 (32767).

    number of t_pos: = 1;

    number of t_size: = nls_charset_decl_len (32764, nls_charset_id ("char_cs"));

    number of t_len;

    t_fh utl_file.file_type;

    Start

    t_fh: = utl_file.fopen (p_dir, p_filename, "wb", 32767);

    t_len: = length (p_clob);

    loop

    When the t_pos output > t_len;

    t_buffer: = replace (replace (substr (p_clob, t_pos, t_size), Chr (10)), Chr (13));

    t_pos: = t_pos + t_size;

    all in t_pos <= t_len="" and="" mod(="" length(="" t_buffer="" ),="" 4="" )="">0

    loop

    t_buffer: = t_buffer | Replace (replace (substr (p_clob, t_pos, 1), Chr (10)), Chr (13));

    t_pos: = t_pos + 1;

    end loop;

    UTL_FILE.put_raw (t_fh, utl_encode.base64_decode (utl_raw.cast_to_raw (t_buffer)));

    end loop;

    UTL_FILE.fclose (t_fh);

    end;

  • CANNOT ACCESS THE FILE USING UTL_FILE

    I created using mon_repertoire
    create or replace directory mon_repertoire as 'd:\try ';

    then I did
    GRANT read, write on DIRECTORY mon_repertoire TO scott;

    then I create a following procedure d...


    Create or replace procedure UTLTEST as
    utl_file.file_type F1.
    Start
    -Open a file in write mode
    F1: is utl_file.fopen('MY_DIR','newfile.txt','W');.
    -Write a line to a file
    UTL_FILE.put_line (f1, 1.) "This is a test of package UTL_FILE);
    UTL_FILE.put_line (f1 2), Oracle has added a new procedure in the package ');
    UTL_FILE.put_line (f1 3), Let's see together the procedure one ');
    -Closes a file
    UTL_FILE.fclose (F1);
    end;

    I got the following errors:


    ERROR on line 1:
    ORA-29283: invalid file operation
    ORA-06512: at "SYS." UTL_FILE", line 475
    ORA-29283: invalid file operation
    ORA-06512: at "SCOTT. UTLTEST', line 5
    ORA-06512: at line 1


    How can I do this task?

    Hello

    Create an inventory of items that points to a physical directory on the server.

    If the path to the physical directory in the db server is D:\applications

    Then,
    Simply create the directory as object

    CREATE or replace directory mon_repertoire is "D:\applications";

    Then try your coding plsql.

  • Procedure using utl_file.fopen

    Hello
    I want to open a file, read line by line, and if I find a particular word, I want to display the whole line.
    I tried to write a procedure, but not getting desired do not output.

    DECLARE
    x utl_file.file_type;
    y varchar2 (200);
    BEGIN
    x: = utl_file.fopen('TRACE1',DB_ora_111_trc.txt','R');
    LOOP
    BEGIN

    UTL_FILE. GET_LINE(x,y);
    If x = "select".
    dbms_output.put_line (x);
    end if;

    EXCEPTION
    WHEN NO_DATA_FOUND THEN EXIT;
    END;
    END LOOP;
    UTL_FILE.fclose (x);
    END;
    /

    Here I am opening a file of tkprof and trying to grep for select word and if he is found, select all to display query. The above doesn't show any output. Kindly help me as I'm new to coding.

    Thank you

    user10698496 wrote:
    Thank you BlueShadow.I tried to run, but received the error as
    ORA-06502: PL/SQL: digital or value error: character of number conversion error.

    I put the '+ 5' after barcket.

    Oops, my bad. Sorry about that.

    DECLARE
    f utl_file.file_type;
    s varchar2(2000);
    in_select boolean;
    BEGIN
    f := utl_file.fopen('TRACE1','DB_ora_1118250.trc.txt','R');
    in_select := false;
    LOOP
    BEGIN
    UTL_FILE.GET_LINE(f,s);
    if lower(s) like '%select%' or in_select then
    dbms_output.put_line(s);
    if lower(s) like '%from%' then
    dbms_output.put_line('TABLES: '||substr(s,instr(s,'from')+5)); -- +5 to get past the from and the space character after it.
    end if;
    in_select := not(s like '%;'); -- stop when we get to ";" at end of a line.
    end if;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN EXIT ;
    END;
    END LOOP;
    utl_file.fclose(f);
    END;
    / 
    
    SELECT lpad(to_char(NVL(MAX(to_number(serial_num)), 0) + 1), 12, '0')
    FROM
    TABLES:
    SALES WHERE s_id =  :1   AND s_name =  :2
    
    SELECT S_CODE
    FROM
    TABLES:
    S_MAST WHERE s_id =  :1   AND s_name =  :2
    

    If you notice after 'from' the word TABLE is attached due to dbms_output.put_line('TABLES.)
    But he did not cut the name of the table only and shown as output.

    Well, obviously, now we can see the entire SQL statement that you are querying, your table names are not on the same line as your statement 'FROM '.
    This means that it won't be easy to spot where the tables are in the statement.

    Perhaps if you explained what you're actually trying to reach, then we can help you, but looks like you are trying to do something beyond the reach of reason.

    I also tried to put the output in a file

    DECLARE
    f utl_file.file_type;
    s varchar2(2000);
    in_select boolean;
    opfile utl_file.file_type;
    
    BEGIN
    f := utl_file.fopen('TRACE_EXTRACT','nis_trc.txt','R');
    opfile := utl_file.fopen ('TRACE1',,'SELECT.txt','W');
    in_select := false;
    LOOP
    BEGIN
    UTL_FILE.GET_LINE(f,s);
    if lower(s) like '%select%' or in_select then
    dbms_output.put_line(s);
    utl_file.put_line(opfile,s);
    in_select := not(s like '%;'); -- stop when we get to ";" at end of a line.
    
    end if;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN EXIT ;
    END;
    END LOOP;
    utl_file.fclose(f);
    END;
    / 
    
    ERROR at line 1:
    ORA-29283: invalid file operation
    ORA-06512: at "SYS.UTL_FILE", line 536
    ORA-29283: invalid file operation
    ORA-06512: at line 8
    

    The TRACE1 directory exist and I also granted READ/WRITE permissions. Why does this error happen?

    Perhaps because of this...

    opfile := utl_file.fopen ('TRACE1',,'SELECT.txt','W');
    

    You seem to have an extra ',' in your settings.

  • How to add a character using UTL_FILE pkg

    A table with student_id, student_name and date_of_join.
    create table student(std_id varchar2(10),std_name varchar2(20),std_doj date);
    I'm loading data from flat file below using UTL_FILE package
    101   ron   04081999
    101   ron   01081996
    102   ram   05082000
    102   ram   12101999
    103   fin   06082001
    104   gin   07082002
    105   gem   08082003
    I use a procedure to load the data into the table using the UTL_FILE package

    Student ID 101 & 102 have two dates mating as they registered for two courses. In the flat file, there is no change in the std_id, but I have to add a 'C' character to those who have registered for the second course.

    I have to add a character in column std_id. for example: after loading the result I want is
    std_id          std_name          std_doj
    --------------------------------------------------------------
    101          ron               04081999
    101C          ron               01081996
    102          ram               05082000
    102C          ram               12101999
    103            fin                06082001
    104             gin               07082002
    105             gem               08082003          
    Can you please give me an idea on how to get the result above using UTL_PACKAGE in the procedure?

    It has nothing to do with UTL_FILE. In your charge process you are a loop in the file line by line, right? IF you need to:

    DECLARE
        prev_std_id number;
    BEGIN
        LOOP
          read a line
          parse it into std_id, std_name and std_doj
          IF std_id = prev_std_id
            THEN
              std_id := std_id  || 'C';
            ELSE
              prev_std_id := std_id;
          END IF;
          insert row
        END LOOP;
    END;
    

    SY.

  • Help: How to deal with the character of the line following in utl_file.put_line?

    Hello

    We try to generate a flat file from an Oracle table through utl_file.put_line. He is troubled with the Fed line of character. How deal with him or another way to do this?

    Any suggestions are greatly appreciated.

    Thank you.
    Jimmy

    I assume that your database is running on unix/linux?

    Try to use UTL_FILE. PUT (Data), followed by a UTL_FILE. PUT (CHR (13): 10;)

  • problem to extract data from the database using UTL_FILE

    Dear members

    I make use of series for the SUBSTR and INSTR function to extract the fields of a data file and carve out spaces based on the number of post mentioned in the Excel worksheet. I was able to extract the first 3 areas namely, customer, manufacturer, product, but for quantity, requested delivery date, price, I can't do it.

    the flat file structure is as follows:
    Field                       Position From     Position To
    CUSTOMER_NAME               1     30
    MANUFACTURER              31     70
    PRODUCT_NAME              71     90
    QUANTITY                        91     95
    REQUESTED_SHIP_DATE    96     115
    REQUESTED_PRICE            116     120
    Sample data in the flat file is as follows:
    BESTBUY                       SONY ERICSSON                           W580i               25   1-AUG-2008          50
    BESTBUY                       SAMSUNG                                 BLACKJACK           50   15-JUL-2008         150
    BESTBUY                       APPLE                                   IPHONE 4GB          50   15-JUL-2008         
    BESTBUY                       ATT                                     TILT                100  15-JUN-2008         
    BESTBUY                       NOKIA                                   N73                 50   15-JUL-2008         200
    My program code is the following:

    CREATE OR REPLACE PROCEDURE ANVESH.PROC_CONVERSION_API(FILE_PATH IN VARCHAR2,FILE_NAME IN VARCHAR2) 
    IS
        v_file_type utl_file.file_type;
        v_buffer VARCHAR2(1000);
        V_CUSTOMER_NAME VARCHAR2(100);
        V_MANUFACTURER VARCHAR2(50);
        V_PRODUCT_NAME VARCHAR2(50);
        V_QUANTITY NUMBER(10);
        V_REQ_SHIP_DATE DATE;
        V_REQ_PRICE NUMBER(10);
        V_LOG_FILE utl_file.file_type;
        
        V_COUNT_CUST NUMBER;
        V_COUNT_PROD NUMBER;
        
        v_start_pos number := 1;
        v_end_pos number;
       
    BEGIN
        DBMS_OUTPUT.PUT_LINE('Inside begin 1');
        v_file_type := UTL_FILE.fopen(FILE_PATH, FILE_NAME, 'r',null);
            DBMS_OUTPUT.PUT_LINE('Inside begin 1.1');
    
        
        LOOP
        
            BEGIN
                    DBMS_OUTPUT.PUT_LINE('Inside begin 2');
    
            
                UTL_FILE.GET_LINE (v_file_type,v_buffer); 
                    DBMS_OUTPUT.PUT_LINE('Inside begin 2.1');
                    
                           select instr('v_buffer',' ', 1, 1) - 1
                            --into v_end_pos
                            from dual;
    
                   
                            select substr('v_buffer', 1, 7)
                            --into V_CUSTOMER_NAME
                            from dual;
    
                            select instr('v_buffer', ' ', 31, 2)-1
                            --into v_end_pos
                            from dual;
    
                            select trim(substr('v_buffer', 28, 43))
                            --into V_MANUFACTURER
                            from dual;
    
                            select instr('v_buffer', ' ', 45, 1) - 1
                            --into v_end_pos
                            from dual;
    
                            select trim(substr('v_buffer', 44, 45))
                            --into V_PRODUCT_NAME
                            from dual;
    
                
                V_LOG_FILE := UTL_FILE.FOPEN(FILE_PATH, 'LOG_FILE.dat', 'A');
                
                    IF (V_QUANTITY > 0)
                    THEN
                       SELECT COUNT (*)
                       INTO V_COUNT_CUST
                       FROM CONVERSION_CUSTOMERS
                       WHERE CUSTOMER_NAME = V_CUSTOMER_NAME;
               
                       IF(V_COUNT_CUST > 0)
                       THEN
                           SELECT COUNT(*)
                           INTO V_COUNT_PROD
                           FROM conversion_products
                           WHERE PRODUCT_NAME = V_PRODUCT_NAME;
                  
                          IF(V_COUNT_PROD >0)
                           THEN
                                INSERT INTO XXCTS_ORDER_DETAILS_STG VALUES (V_CUSTOMER_NAME, V_PRODUCT_NAME, V_MANUFACTURER, V_QUANTITY, V_REQ_SHIP_DATE, V_REQ_PRICE, 'ACTIVE', 'ORDER TAKEN');   
            
                           ELSE
                                DBMS_OUTPUT.PUT_LINE('PRODUCT SHOULD BE VALID');
                                UTL_FILE.PUT_LINE(V_LOG_FILE, 'PRODUCT SHOULD BE VALID');                    
            
                           END IF; 
                       ELSE
                          DBMS_OUTPUT.PUT_LINE('CUSTOMER SHOULD BE VALID');
                          UTL_FILE.PUT_LINE(V_LOG_FILE, 'CUSTOMER SHOULD BE VALID');
                       END IF;       
               
            
                    ELSE
                        DBMS_OUTPUT.PUT_LINE('QUANTITY SHOULD BE VALID');
                        UTL_FILE.PUT_LINE(V_LOG_FILE, 'QUANTITY SHOULD BE VALID');
                    END IF; 
    
            
                    EXCEPTION
                    WHEN NO_DATA_FOUND THEN
                        EXIT;
                    END;
            
        END LOOP;
        
    END;
    
    /
    I was able to extract the first 3 fields of the file data, but when I use the same SUBSTR and INSTR functions to extract then three fields I am unable to do so (I get 5, 6 on the ground as well when I extract the 4th field). I've hardcoded the position values in these functions, such as mentioned in the structure of flat file.

    It would be great if someone can tell me how to extract the three fields in the flat file.


    Thank you
    Romaric

    Romaric,

    Why you use v_end_pos to trim spaces when you know the beginning and end of all columns positions?
    I do not see the code when you check out the values of other 3 columns (Qty, Date & price).

    You can use substr underneath rather do SELECT each time.

    V_CUSTOMER_NAME  := SUBSTR(v_buffer,1,30);
    V_MANUFACTURER    := SUBSTR(v_buffer,31,70);
    V_PRODUCT_NAME    := SUBSTR(v_buffer,71,90);
    V_QTY := SUBSTR(v_buffer,91,95);
    V_SHIP_DATE := SUBSTR(v_buffer,96,115);
    V_PRICE := SUBSTR(v_buffer,116,120);
    

    -Raj

  • Where can I submit my academic identification (PDF) - student/Europe. Can't find it. No link, no useful mail, no search results.

    Where can I submit my academic identification (PDF) - student/Europe. Can't find it. No link, no useful mail, no search results.

    Hello

    Please see the below help documents for help:

    Adobe for creative education Cloud FAQ

    Online Education FAQ

    Hope that answers your query!

  • OBIEE 11 g - Can we use variable presentation for results not

    Hi all

    I have a prompt on the dashboard called Department, and there only 3 values

    HUMAN RESOURCES
    Finance
    Marketing

    What I want to do, is that if users select HR to the guest and if the report is not all data for HR, I want to show a message

    There is no data for HR in the report and even there is no data for finance in this report

    I thought I'd take the HR in the presentation variable and using them in the results display no. Is this possible? Is there another way to do this?

    Thank you
    Ronny

    Ronny says:
    Thanks David, that was helpful. But guess that's not possible when I have 100 values for the Department.
    No other way to do this?

    -Ronny

    Hey, Ronny.

    The solution I gave you was based on the command prompt "only has 3 values." Of course, with values of 100, this method becomes impracticable. Can not think of anything that will give you exactly what you want. I'm sorry.

  • BLOB data in the directory using UTL_FILE

    Hi all

    "I wrote a procedure to store BLOB data in the directory using * UTL_FILE.



    Using the package UTL_FILE, I created procedure below. Procedure runs successfully without any error, but the file is not written to the directory. Pls find my procedure below.
    * CREATE OR REPLACE PROCEDURE Write_BLOB_To_File
    AS
    v_lob_loc BLOB;
    v_buffer RAW (32767).
    v_buffer_size directory.
    v_amount directory.
    v_offset Number (38): = 1;
    v_chunksize INTEGER.
    v_out_file UTL_FILE. TYPE_DE_FICHIER;
    BEGIN
    -- | SELECT THE LOB LOCATOR
    SELECT an attachment
    IN v_lob_loc
    ATTACHMENT
    WHERE attachment_id = 720;
    -- | DISCOVER THE CHUNKSIZE FOR THAT LOB COLUMN
    v_chunksize: = DBMS_LOB. GETCHUNKSIZE (v_lob_loc);
    IF (v_chunksize < 32767) CAN
    v_buffer_size: = v_chunksize;
    ON THE OTHER
    v_buffer_size: = 32767;
    END IF;
    v_amount: = v_buffer_size;
    -- | OPENING A LOB IS OPTIONAL
    DBMS_LOB. OPEN (v_lob_loc, DBMS_LOB. LOB_READONLY);
    -- | WRITE THE CONTENT OF A LOB IN A FILE
    v_out_file: = UTL_FILE. FOPEN)
    location = > "EXAMPLE_LOB_DIR"
    filename = > "Test.doc."
    OPEN_MODE = > 'w ',.
    max_linesize = > 32767);
    While v_amount > = v_buffer_size
    LOOP
    DBMS_LOB. READ)
    lob_loc = > v_lob_loc,
    amount = > v_amount,
    offset = > v_offset,
    buffer = > v_buffer);
    v_offset: = v_offset + v_amount;
    UTL_FILE. () PUT_RAW
    file = > v_out_file,
    buffer = > v_buffer,
    AutoFlush = > true);
    UTL_FILE. FFLUSH (file = > v_out_file);
    -UTL_FILE. NEW_LINE (file = > v_out_file);
    END LOOP;
    UTL_FILE. FFLUSH (file = > v_out_file);
    UTL_FILE. FCLOSE (v_out_file);
    -- | THE LOB OF CLOSING IS REQUIRED IF YOU OPENED IT
    DBMS_LOB. Close (v_lob_loc);
    END; *


    I have provided the necessary privileges for the schema and directory. But the file is not written to the directory. can you please advise me

    OPEN_MODE-online 'w' change to open_mode-online "wb."

  • Writing a file on the network using UTL_FILE

    Hi all

    Can we write a file on a path to the network using UTL_FILE. I have full access on the network folder, which I use as directory object.

    Details of the environment:
    Oracle Database 10g XE
    WIN XP


    Concerning
    SIS

    SMON wrote:
    but I remember not so utl_file works with UNC paths or not, just try it & see!

    To do this, if the account that runs the writing has permissions to the destination. We use UNC paths in some of our environments.

  • Download the data using UTL_FILE

    Hi all

    I want to load data into the table of flat file and do not want to use SQL Loader. Can any body explain to me how this could be done using UTL_FILE. And something important I want to not all the columns in the file, I need specific columns.

    Is it possible to bulk operation for downloading data such that it will be faster compared to line-by-line reading and the same insertion If yes how?


    Thanks in advance...



    Kind regards
    Dhabas

    So they pay a lot of money for features of the Oracle DBMS only to code them again on their own? Weird, but are not uncommon.

    If they don't want to use SQL Loader, you might be lucky to ask them if they want to use external tables. As with utl_file, you read access on the server but simply set the table once and then you can do a select on it.

    How to create http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/tables.htm#i1007424

    If you have different file names you can change the definition accordingly Re: question of external table -

    What you try to do with utl_file will mutliply your efforts.
    -Open the file
    -loop
    -Read the line
    -cut out the delimiter string and assign each value to a variable
    -end of loop
    -close file

    Instead of
    -bulk collect in the external table collection

    Concerning
    Marcus

  • How to: 8315793 - keyboard use to reduce the results area

    Hello

    I saw the request for implementation: "8315793 - keyboard use to reduce the results area" in section 2.1.1 but I can't find even in the list of shortcut keys.

    What is the keyboard shortcut for this...?

    Thanks, Jürgen

    See request "Hotkey to show/hide the grid result" = How has been implemented 2.1.1?

    Have fun
    K.

Maybe you are looking for