Count files in a dirctory using plsql

Hi ,
Currently i am using a shell script that counts the number of files in unix level directory that had xml files and load to the table as CLOB using the sql loader.
Now i want to use plsql l to count files and then load using insert the script.I am able to use insert statement but not have any idea to count files at unix level using plsql.
Please give me some ideas.
Thanks in Advance.
Rede

Neither does anyone else... <<LOL
I've found this one quite some time ago...
-- How to get a listing of files in a directory using PL/SQL has got to be one of the most
-- popular questions asked by Oracle developers. Prior to 10g, DIY solutions included the
-- sophisticated, using either Java (8i onwards) or External Procedures (8 onwards),
-- or the clunky (pipe servers and shell scripts from 7 onwards)
-- However in 10g there is a new procedure hidden away in the undocumented
-- DBMS_BACKUP_RESTORE package. It's called searchfiles, which is a bit of a giveaway
-- and appears to have been introduced for the new backup features in 10g, as RMAN
-- now needs to know about files in the recovery destination.
-- Calling this procedure populates an in memory table called X$KRBMSFT, which
-- is one of those magic X$ tables, the only column which is of relevance to us
-- is FNAME_KRBMSFT which is the fully qualified path and file name.
-- This X$ table acts in a similar fashion to a global temporary table in that it's contents
-- can only be seen from the calling session. So two sessions can call searchfiles and each
-- can only see the results of their call (which is extremely useful).
-- The code sample below will only really run as SYS, due to the select from X$KRBMSFT, it's
-- just intended as a demo. The first two parameters in the call to searchfiles are
-- IN OUT so must be defined as variables, even though the second parameter is of no consequence
-- to us and should be left as NULL. Even though they are IN OUT, testing shows they don't
-- appear to change.
-- Updated 29/05/2007
-- The first parameter is the string to search for, in much the same format as you would pass
-- in a call to dir (Windows) or ls (Unix). However, on some platforms and versions
-- passing in a wildcard or anything other than a directory name will result in an empty X$KRBMSFT.
-- The trick here is to simply pass a valid OS directory name - the entire listing of that directories
-- contents will now appear in X$KRBMSFT, which can then be filtered using LIKE.
-- This procedure appears to raise no exceptions, passing an invalid search string, such
-- as a non-existant path or one with no permissions, simply results in an empty X$KRBMSFT.
-- However, if the database parameter db_recovery_file_dest is not set, you will get ORA-19801.
-- Interestingly, this procedure recursively searches sub directories found in the search string.
-- So passing a string of 'C:\windows' (for example) populates X$KRBMSFT with not only the files found
-- in that directory but all the files found in all directories beneath, such as C:\windows\system32.
-- As X$KRBMSFT is an in memory table, you have been warned! Calling this procedure on a directory
-- with thousands of sub directories and files has the potential to blow out memory
-- The way forward is to wrap this functionality in a package, perhaps using
-- directory objects instead and checking access priviliges, creating a view based on X$KRBMSFT,
-- maybe even allowing/disallowing subdirectory traversal and limiting memory usage search size.
-- I see another project coming, stay tuned for XUTL_FINDFILES!
-- This code has been tested and works as intended on Oracle 10104 EE.
-- Get this tip and others, along with useful PL/SQL utilities at
-- www.chrispoole.co.uk
DECLARE
pattern VARCHAR2(1024) := '/u01/oracle/admin/SID/udump';
ns VARCHAR2(1024);
BEGIN
SYS.DBMS_BACKUP_RESTORE.searchFiles(pattern, ns);
FOR each_file IN (SELECT FNAME_KRBMSFT AS name FROM X$KRBMSFT WHERE FNAME_KRBMSFT LIKE '%.trc') LOOP
DBMS_OUTPUT.PUT_LINE(each_file.name);
END LOOP;
END;
DECLARE
pattern VARCHAR2(1024) := 'C:\temp\*';
ns VARCHAR2(1024);
BEGIN
SYS.DBMS_BACKUP_RESTORE.searchFiles(pattern, ns);
FOR each_file IN (SELECT FNAME_KRBMSFT AS name FROM X$KRBMSFT) LOOP
DBMS_OUTPUT.PUT_LINE(each_file.name);
END LOOP;
END;
/Thomas

Similar Messages

  • Help Required:How Upload Excel file Into Oracle Table Using PLSQL Procedure

    Please Help , Urgent Help Needed.
    Requirement is to Upload Excel file Into Oracle Table Using PLSQL Procedure/Package.
    Case's are :
    1. Excel File is On Users/ Client PC.
    2. Application is on Remote Server(Oracle Forms D2k).
    3. User Is Using Application Using Terminal Server LogIn.
    4. So If User Will Use to GET_FILE_NAME() function of D2K to Get Excel File , D2k Will Try to pick File from That Remote Server(Bcs User Logind from Terminal Server Option).
    5. Cannot Use Util_File Package Or Oracle Directory to Place That File on Server.
    6. we are Using Oracle 8.7
    So Need Some PL/SQL Package or Fuction/ Procedure to Upload Excel file on User's Pc to Oracle Table.
    Please Guide me wd some Code. or with Some Pl/SQL Package, or With SOme Hint. Or any Link ....
    Jus help to Sort This Issue ........
    you can also write me on :
    [email protected], [email protected]

    TEXT_IO is a PL/SQL package available only in Forms (you'll want to post in the Forms forum for more information). It is not available in a stored procedure in the database (where the equivalent package is UTL_FILE).
    If the Terminal Server machine and the database machine do not have access to the file system on the client machine, no application running on either machine will have access to the file. Barring exceptional setups (like the FTP server on the client machine), your applications are not going to have more access to the client machine than the operating system does.
    If you map the client drives from the Terminal Server box, there is the potential for your Forms application to access those files. If you want the files to be accessible to a stored procedure in the database, you'll need to move the files somewhere the database can access them.
    Justin

  • Extract xml file with rowset schema using plsql

    I want to extract the rowsheet data from an xml file using plsql database procedure
    Here is an example of the xml file:
    <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
         xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
         xmlns:rs='urn:schemas-microsoft-com:rowset'
         xmlns:z='#RowsetSchema'>
    <s:Schema id='RowsetSchema'>
         <s:ElementType name='row' content='eltOnly'>
              <s:AttributeType name='Sheet_Number' rs:number='1' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
              </s:AttributeType>
              <s:AttributeType name='Appl_Number1' rs:number='2' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
              </s:AttributeType>
              <s:AttributeType name='Rating1' rs:number='3' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:AttributeType name='Criteria1' rs:number='4' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:AttributeType name='Appl_Number2' rs:number='5' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
              </s:AttributeType>
              <s:AttributeType name='Rating2' rs:number='6' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:AttributeType name='Criteria2' rs:number='7' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:extends type='rs:rowbase'/>
         </s:ElementType>
    </s:Schema>
    <rs:data>
         <z:row Sheet_Number='32486' Appl_Number1='198970' Rating1='-2' Criteria1='RTG' Appl_Number2='198989' Rating2='5'
              Criteria2='RTG'/>
         <z:row Sheet_Number='12345' Appl_Number1='198970' Rating1='-3' Criteria1='RTG' Appl_Number2='198989' Rating2='3'
              Criteria2='RTG'/>
    </rs:data>
    </xml>
    I need to extract the values from all of the columns : sheet_number, appl_number1, rating1, criteria1, appl_number2, rating2, criteria2. Validate the data and insert into oracle tables.
    I'm having dificulties extrating the data from the "z:row" recordset
    Can anyone help with the syntax ?
    I'm use to extracting with tags using syntax like this
    declare
    v_xml_content XMLTYPE;
    begin
    v_xml_content := db_get_xml_from_file (p_file_name, p_directory, 'ISO-8859-1');
    FOR f IN (SELECT value(x) file_data
    FROM TABLE
    (xmlsequence
    (extract (v_xml_content,'/data'))) x) LOOP
    SELECT extractvalue(f.file_data,'/data/row') into v_row from dual;                                                                      END LOOP;

    I want to extract the rowsheet data from an xml file using plsql database procedure
    Here is an example of the xml file:
    <xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
         xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
         xmlns:rs='urn:schemas-microsoft-com:rowset'
         xmlns:z='#RowsetSchema'>
    <s:Schema id='RowsetSchema'>
         <s:ElementType name='row' content='eltOnly'>
              <s:AttributeType name='Sheet_Number' rs:number='1' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
              </s:AttributeType>
              <s:AttributeType name='Appl_Number1' rs:number='2' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
              </s:AttributeType>
              <s:AttributeType name='Rating1' rs:number='3' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:AttributeType name='Criteria1' rs:number='4' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:AttributeType name='Appl_Number2' rs:number='5' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
              </s:AttributeType>
              <s:AttributeType name='Rating2' rs:number='6' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:AttributeType name='Criteria2' rs:number='7' rs:nullable='true' rs:maydefer='true' rs:writeunknown='true'>
                   <s:datatype dt:type='string' dt:maxLength='25'/>
              </s:AttributeType>
              <s:extends type='rs:rowbase'/>
         </s:ElementType>
    </s:Schema>
    <rs:data>
         <z:row Sheet_Number='32486' Appl_Number1='198970' Rating1='-2' Criteria1='RTG' Appl_Number2='198989' Rating2='5'
              Criteria2='RTG'/>
         <z:row Sheet_Number='12345' Appl_Number1='198970' Rating1='-3' Criteria1='RTG' Appl_Number2='198989' Rating2='3'
              Criteria2='RTG'/>
    </rs:data>
    </xml>
    I need to extract the values from all of the columns : sheet_number, appl_number1, rating1, criteria1, appl_number2, rating2, criteria2. Validate the data and insert into oracle tables.
    I'm having dificulties extrating the data from the "z:row" recordset
    Can anyone help with the syntax ?
    I'm use to extracting with tags using syntax like this
    declare
    v_xml_content XMLTYPE;
    begin
    v_xml_content := db_get_xml_from_file (p_file_name, p_directory, 'ISO-8859-1');
    FOR f IN (SELECT value(x) file_data
    FROM TABLE
    (xmlsequence
    (extract (v_xml_content,'/data'))) x) LOOP
    SELECT extractvalue(f.file_data,'/data/row') into v_row from dual;                                                                      END LOOP;

  • How to convert the TEXT file into an XML using plsql code

    Hi all ,
    I need to convert an TEXT file into an XML file how can i do it
    Below is my sample TEXT file .
    TDETL00000000020000000000000120131021115854ST2225SKU77598059          0023-000000010000
    I want the above to be converted into the below format
    <?xml version="1.0" encoding="UTF-8"?>
    <txt2xml>
      <!-- Processor splits text into lines -->
      <processor type="RegexDelimited">
      <regex>\n</regex>
            <!--
            This is used to specify that a message should be created per line in
            the incoming file;
            NOTE: this was designed to work with all the processors, however it
            only works correctly with 'RegexDelimited' processors (check the
            enclosing top processor type)
             -->
             <maxIterationsPerMsg>1</maxIterationsPerMsg>
      <!-- For lines beginning with FHEAD (File Header) -->
      <processor type="RegexMatch">
      <element>FHEAD</element>
      <regex>^FHEAD(.*)</regex>
      <processor type="RegexMatch">
      <element>OriginalLine</element>
      <regex>(.*)</regex>
      <consumeMatchedChars>false</consumeMatchedChars>
      </processor>
      <processor type="RegexMatch">
      <element>LineSeq,Type,Date</element>
      <regex>^(\d{10})(\w{4})(\d{14})$</regex>
      </processor>
      </processor>
      <!-- For lines beginning with TDETL (Transaction Details) -->
      <processor type="RegexMatch">
      <element>TDETL</element>
      <regex>^TDETL(.*)</regex>
      <processor type="RegexMatch">
      <element>OriginalLine</element>
      <regex>(.*)</regex>
      <consumeMatchedChars>false</consumeMatchedChars>
      </processor>
      <processor type="RegexMatch">
      <element>LineSeq,TransControlNumber,TransDate,LocationType,Location,ItemType,Item,UPCSupplement,InventoryStatus,AdjustReason,AdjustSign,AdjustQty</element>
      <regex>^(\d{10})(\d{14})(\d{14})(\w{2})(\d{4})(\w{3})([\w ]{13})([\w ]{5})(\d{2})(\d{2})([+-]{1})(\d{12})$</regex>
      </processor>
      </processor>
      <!-- For lines beginning with FTAIL (File Tail) -->
      <processor type="RegexMatch">
      <element>FTAIL</element>
      <regex>^FTAIL(.*)</regex>
      <processor type="RegexMatch">
      <element>OriginalLine</element>
      <regex>(.*)</regex>
      <consumeMatchedChars>false</consumeMatchedChars>
      </processor>
      <processor type="RegexMatch">
      <element>LineSeq,TransCount</element>
      <regex>^(\d{10})(\d{6})$</regex>
      </processor>
      </processor>
      </processor>
    </txt2xml>
    Thanks

    Sorry, that doesn't make much sense.
    The XML you gave is a configuration file for txt2xml utility. It doesn't represent the output format.
    Are you a user of this utility?

  • Help Required :Excel Upload Into Oracle Table Using PLSQL Procedure/Package

    Please Help , Urgent Help Needed.
    Requirement is to Upload Excel file Into Oracle Table Using PLSQL Procedure/Package.
    Case's are :
    1. Excel File is On Users/ Client PC.
    2. Application is on Remote Server(Oracle Forms D2k).
    3. User Is Using Application Using Terminal Server LogIn.
    4. So If User Will Use to GET_FILE_NAME() function of D2K to Get Excel File , D2k Will Try to pick File from That Remote Server(Bcs User Logind from Terminal Server Option).
    5. Cannot Use Util_File Package Or Oracle Directory to Place That File on Server.
    6. we are Using Oracle 8.7
    So Need Some PL/SQL Package or Fuction/ Procedure to Upload Excel file on User's Pc to Oracle Table.
    Please Guide me wd some Code. or with Some Pl/SQL Package, or With SOme Hint. Or any Link ....
    Jus help to Sort This Issue ........
    you can also write me on :
    [email protected], [email protected]

    I also Tried to Use This
    But How can i Use SQLLDR Command In Stored Procedure.
    Well IN SQL*PlUS it is successfull but in Stored Procedure /Package ,PL/SQL does not recognise the OS commands.
    So now my Question How can I recognise the SQLLDR Commnad in Stored Procedure.

  • Read a text file from DB directly (don't use PLSQL).

    how can I Read a text file from DB directly (don’t use PLSQL). ?

    If there is a known structure, you could use External Table access and query that "file" as any table.
    Nicolas.

  • Read saved outlook files using plsql

    Hi,
    Is there anyway of reading the contents of a saved outlook email file (.msg format) using plsql developer.
    I'm interested in reading the sent time and sender name.
    I know you can read directly from email account but unfortunately thats not possible in my context. I have to read from saved .msg file in a directory.

    garuka wrote:
    Hi,
    Is there anyway of reading the contents of a saved outlook email file (.msg format) using plsql developer.
    I'm interested in reading the sent time and sender name.
    I know you can read directly from email account but unfortunately thats not possible in my context. I have to read from saved .msg file in a directory.How do I ask a question on the forums?
    SQL and PL/SQL FAQ
    solution depends upon where "you" reside & where directory "resides"

  • Saving the source of html file generated using PLSQL into a client folder

    Hi All,
    I have generated html pages using htp procedure calls. On a button click, these html pages need to be stored as html files on a local client drive folder. My requirement says okay with resulting security issues.
    I have a couple of queries.
    1.Any client side javascript can fetch the source of a html file and can be saved as another file in a client drive?
    2.Using PLSQL, i generated the html pages using htp procedure calls. Is there any way to save contents of the output to a specific folder. (using owa_util or utl_http packages or any other means)
    Is there any way that i could do this.. Any help is appreciated.
    Thanks in Advance.

    > 1.Any client side javascript can fetch the source of a html file and can be saved as another file in a client drive?
    No.
    > 2.Using PLSQL, i generated the html pages using htp procedure calls. Is there any way to save contents of the output to a specific folder. (using owa_util or utl_http packages or any other means)
    No, you cannot from PL/SQL simply write to that client's folder - unless a very complex and very insecure and very non-scalable method of dynamically mapping client folders are implemented.
    This whole approach is also extremely insecure. If you can from the server push a page to a folder on a client, you can also push a binary "page" to a client folder - where this "page" is in fact a worm/virus/trojan that you simply write into the StartUp desktop folder to have it autostarted to install itself on that client.
    Also - web browser automatically save the contents from a web server in their local cache. Thus the pages received are automatically saved locally. For the security reasons already mentioned, operating system and web browser treats this cache with suspicion as it could contain cached virus/worms/trojans - so the cache operates under extreme security conditions.
    The correct way to handle this requirement is to state next to the URL for that HTML page that the user wants downloaded to right-click on it and to select the "SAVE URL AS" option to save it to a local folder.
    Saving that page on the client is the client's responsibility and ownership - from security to simply deciding where that file must be placed on the client system.

  • Loading Large XML files  using plsql

    I have a process where there is a need to load large xml files (i.e. easily over 500k or more) into Oracle via an interface. Preference would be to use plsql or some plsql based utility if possible. I am looking for any suggestions on the best method to accomplish this. Currently running on 9.2.0.6. Thanks in advance.

    I have a process where there is a need to load large xml files (i.e. easily over 500k or more) into Oracle via an interface. Preference would be to use plsql or some plsql based utility if possible. I am looking for any suggestions on the best method to accomplish this. Currently running on 9.2.0.6. Thanks in advance.

  • Loading/breaking large files containing multiple XML documents using plsql

    Hi I have a requirement where in the client sends the multiple xml payloads/documents in a single text file. I need to load that into the xmltype varialbe. How to do this?
    I'm able to load the entire document into a clob object, here.. all the xml payloads are loaded into a single row. When I try to access this I get a error
    ORA-31001: Invalid resource handle or path name "/MobileInventoryResponse.dtd"
    ORA-06512: at "SYS.XMLTYPE", line 254
    ORA-06512: at line 1
    This error is due to the dtd present in the xml document : <!DOCTYPE MobileInventoryResponse SYSTEM "MobileInventoryResponse.dtd">
    But if I load the data into a clob after removing the doctype reference then I get the following error. Here to mulitple xml documents are loaded into a single clob row.
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00209: PI names starting with XML are reserved
    Error at line 81
    ORA-06512: at "SYS.XMLTYPE", line 254
    ORA-06512: at line 1
    When try to access this by using select xmltype(x) from t
    where x is column type of clob.
    Please let me know any method or type loading the multiple xml documents by using plsql. Only plsql method. There is a way by using SAX Loader. But can it be used in plsql or its a java method of loading.
    Regards,
    Naveen
    Edited by: MAN on Oct 18, 2008 9:21 PM

    sorry for that...
    There was enter character between some tags. From there I'm not receiving that particular error.
    Now what I get is
    ORA-31001: Invalid resource handle or path name "/MobileInventoryResponse.dtd"
    ORA-06512: at "SYS.XMLTYPE", line 254
    ORA-06512: at line 1
    ORA-06512: at line 39
    This is because there is a doctype at the start of the xml payload.
    But if there is no <!DOCTYPE MobileInventoryResponse SYSTEM "MobileInventoryResponse.dtd"> this statement then it works fine.
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE MobileInventoryResponse SYSTEM "MobileInventoryResponse.dtd">
    <MobileInventoryResponse>
    And this exercise I'm doing in my Windows xp loaded operating system with a local instance of oracle ... Do i need to do any other setting.
    Along with that I followed your method mentioned @ Re: LPX-00209: PI names starting with XML are reserved
    ignore:=dbms_xdb.createResource('/MobileInventoryResponse.dtd',bfilename('XML_DIR','MobileInventoryResponse.dtd'));
    And I'm not getting how it will refer the this resource.
    this above partilcular statement . should it be executed when ever we insert into the table ? But in the dtd there is no word saying "MobileInventoryResponse".
    got this error.
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00104: Warning: element "MobileInventoryResponse" is not declared in the DTD
    Error at line 1
    ORA-06512: at "SYS.XMLTYPE", line 254
    ORA-06512: at line 1
    ORA-06512: at line 21
    This is how I'm doing in the block
    DECLARE
    l_filehandle UTL_FILE.FILE_TYPE;
    l_filename VARCHAR2(50):='test.xml';
    l_rec_data VARCHAR2(500);
    l_rec_trim_data VARCHAR2(500);
    l_rec_trim_upper VARCHAR2(500);
    l_rec_full_data CLOB;
    ignore boolean;
    BEGIN
    l_filehandle := UTL_FILE.FOPEN('XML_DIR',l_filename,'R');
    --dbms_xdb.deleteResource('/MobileInventoryResponse.dtd',dbms_xdb.DELETE_RESOURCE   );
    LOOP
    ignore:=dbms_xdb.createResource('/MobileInventoryResponse.dtd',bfilename('XML_DIR','MobileInventoryResponse.dtd'));
    commit;
    UTL_FILE.GET_LINE(l_filehandle, l_rec_data);
    --dbms_output.put_line('l_rec_data : '|| l_rec_data);
    -- Trim the record to remove spaces
    l_rec_trim_data := TRIM(l_rec_data);
    l_rec_trim_upper := UPPER(l_rec_trim_data);
    l_rec_full_data := l_rec_full_data||l_rec_data;
    IF l_rec_trim_upper LIKE '</MOBILEINVENTORYRESPONSE>' THEN
    dbms_output.put_line('l_rec_full_data : '||l_rec_full_data);
    INSERT INTO library_xml VALUES(xmltype(l_rec_full_data));
    l_rec_full_data:=NULL;
    END IF;
    dbms_xdb.deleteResource('/MobileInventoryResponse.dtd',dbms_xdb.DELETE_RESOURCE );
    commit;
    END LOOP;
    UTL_FILE.FCLOSE(l_filehandle);
    COMMIT;
    --exception just for testing purpose
    EXCEPTION
    WHEN no_data_found THEN
    NULL;
    commit;
    END;
    Edited by: MAN on Oct 21, 2008 2:47 AM

  • How to create a folder using plsql

    hi all
    i want create a folder using plsql procedures .

    I am not sure weather you can create a folder on database server file system using pl/sql code but you certainly can create/read/write file system files using UTL_FILE package.
    'The Oracle supplied package UTL_FILE can be used to read and write files that are located on the server. It cannot be used to access files locally, that is on the computer where the client is running.'

  • Using plsql tables in select statement of report query

    Hi
    Anyone have experience to use plsql table to select statement to create a report. In otherwords, How to run report using flat file (xx.txt) information like 10 records in flat files and use this 10 records to the report and run pdf files.
    thanks in advance
    suresh

    hi,
    u can use the utl_file package to do that using a ref cursor query in the data model and u can have this code to read data from a flat file
    declare
    ur_file utl_file.file_type;
    my_result varchar2(250);
    begin
    ur_file := UTL_FILE.FOPEN ('&directory', '&filename', 'r') ;
    utl_file.get_line(ur_file, my_result);
    dbms_output.put_line(my_result);
    utl_file.fclose(ur_file);
    end;
    make sure u have an entry in ur init.ora saying that your
    utl_file_dir = '\your directory where ur files reside'
    cheers!
    [email protected]

  • Download file to local machine using WPG_DOCLOAD.download

    Hi ,
    i am using database 11g and i am trying to write to file on database server using utl_file and download to the local machine by pl/sql procedure . i am directly executing this procedure in pl/sql . i am getting ORA-06502: PL/SQL: numeric or value error when executing owa_util.mime_header ('application/vnd.ms-excel',TRUE); statement in the procedure . not sure what is happening and i am new in using these features
    here is my code
    CREATE OR REPLACE PROCEDURE UTL_TEST_DOWNLOAD
    AS
    output_file utl_file.file_type;
    vexists BOOLEAN;
    vfile_length NUMBER;
    vblocksize NUMBER;
    l_blob BLOB;
    l_bfile BFILE;
    BEGIN
    output_file:=UTL_FILE.FOPEN('DATA_DIR', 'timesheet.csv', 'w');
    UTL_FILE.PUT_LINE(output_file,'COST_CENTRE'||
    'HISTORY_DATE'||
    'REF_NO'||
    'FIELD_NAME'||
    'VALUE'||
    'DATA_TYPE'||
    'CHANGE_DATE'||
    'INT_REF');
    UTL_FILE.fclose(output_file);
    UTL_FILE.FGETATTR('DATA_DIR','timesheet.csv',vexists,vfile_length,vblocksize);
    IF vexists THEN
    DBMS_LOB.createtemporary (l_blob, TRUE, DBMS_LOB.SESSION);
    l_bfile := BFILENAME ('DATA_DIR', 'timesheet.csv');
    DBMS_LOB.fileopen (l_bfile,dbms_lob.file_readonly);
    DBMS_LOB.loadfromfile (l_blob, l_bfile, DBMS_LOB.getlength (l_bfile));
    DBMS_LOB.fileclose (l_bfile);
    owa_util.mime_header ('application/vnd.ms-excel',TRUE);
    dbms_output.put_line('after owa_util' );
    owa_util.http_header_close;
    WPG_DOCLOAD.download_file (l_blob);
    end if;
    EXCEPTION
    WHEN utl_file.invalid_path THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_path');
    WHEN utl_file.invalid_mode THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_mode');
    WHEN utl_file.invalid_filehandle THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_filehandle');
    WHEN utl_file.invalid_operation THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.invalid_operation');
    WHEN utl_file.read_error THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.read_error');
    WHEN utl_file.write_error THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.write_error');
    WHEN utl_file.internal_error THEN
    RAISE_APPLICATION_ERROR(-20001, 'utl_file.internal_error');
    WHEN OTHERS THEN
    dbms_output.put_line('SQLERRM '||SQLERRM);
    END UTL_TEST_DOWNLOAD
    SQLERRM ORA-06502: PL/SQL: numeric or value error
    The file is getting created all the time i execute this procedure i am getting the above error while executing this statement owa_util.mime_header ('application/vnd.ms-excel',TRUE);

    Hi,
    it seems your issue is with PLSQL product so I would suggest to post your question in the PLSQL forum.
    reference
    PL/SQL
    REgards, Roberto

  • Count files in Directory and the number of files in each sub directory

    Hello,
    I trying write a method which will start at a root of a file and count all the files in that directory. Then count all the files in each sub directory.
    import java.io.File;
    import java.io.FilenameFilter;
    import java.io.IOException;
    public class RunScan {
         * @param args
         public static void main(String[] args) {
              // TODO Auto-generated method stub
              File file = new File("/home/robert/count");
              File[] files = file.listFiles();
              traverse(files);
              printfiles();
         private static int totalNumFiles = 0;
         private static int totalNumDir = 0;
         private static int filePerDir = 0;
         private static int subDir = 0;
         private static void traverse(File[] files) {
    for(int i = 0; i < files.length; i++) {
    if(files.isDirectory()) {
         totalNumDir++;
         printDir(files[i].toString());
         traverse(files[i].listFiles());
    totalNumFiles++;
    filePerDir++;
         private static void printfiles(){
              System.out.println("total files "+ (totalNumFiles));
         System.out.println("totls sub dir "+ totalNumDir);
         private static void printDir(String dirName){
              System.out.println("Total Files in "+dirName+" "+filePerDir);
              filePerDir = 0;

    Hint: Google "visitor pattern." This gives clues how to build a re-usable solution that can you use for future traversals that do things other than just file counts. Here's a teaser of an simple interface:
    public interface TreeVisitor {
    * Processes a single file or directory. <em>Tip:</em> If you want to track the number of
    * items processed, this function is the best place to update a counter.
    * Implementors of this method should not throw checked exceptions.
    * @param item The file or directory process.
    * @param depth Number of levels below top of traversal tree (0 = top of tree).
    public void visit(File item, int depth);
    }

  • How can i determine if a directory exist using plsql

    i want to determine if a directory exist
    e.g
    directory in variable dir_source:= 'xc/folderName/SubFolder'
    i want find how to determine if the above exist on my server using plsql
    Edited by: kama021 on Jun 24, 2009 2:21 AM
    i don't want to create a direcotry if it exist already so how do i do this
    if the below directory exist then don't create how do this
    'xc/folderName/SubFolder'
    Edited by: kama021 on Jun 24, 2009 3:26 AM

    What OS? The trick is to use a known special file that always exists in every folder. On Windows an example of this is NUL. It's the equivalent of /dev/null but exists in every directory automagically. That means you can do this:
    SQL> create directory temp as 'C:\TEMP';
    Directory created.
    SQL> select dbms_lob.fileexists(bfilename('TEMP', 'NUL')) from dual;
    DBMS_LOB.FILEEXISTS(BFILENAME('TEMP','NUL'))
                                               1
    1 row selected.
    SQL> create directory test as 'C:\NOTREAL';
    Directory created.
    SQL> select dbms_lob.fileexists(bfilename('TEST', 'NUL')) from dual;
    DBMS_LOB.FILEEXISTS(BFILENAME('TEST','NUL'))
                                               0
    1 row selected.

Maybe you are looking for

  • How do I stop my wife's iPhone from importing her photos to my iPhoto account on my laptop?

    How do I stop my wife's iPhone from importing her photos to my iPhoto account on my laptop? I set it up to do this a couple years ago but I forgot exactly how I did it.  Now I need to know how to stop it. What version of iPhoto? v9.6 Of the OS? 10.10

  • Long running table partitioning job

    Dear HANA grus, I've just finished table partitioning jobs for CDPOS(change document item) with 4 partitions by hash with 3 columns. Total data volumn is around 340GB and the table size was 32GB !!!!! (migration job was done without disabling CD, so

  • Chinese language support

    Hi, I'm a new Mac user. I'm having trouble reading simplified and traditional Chinese characters using both Safari and Firefox. I also am not sure the overall Chinese input system on the Mac. I've enabled it and can change into that "mode" to write p

  • How to change to working with referenced images but keep library on laptop

    Hi, So, my iPhoto library is getting too big - I'd like to be able to have the images stored on an external drive and refer to them from within iPhoto, whilst keeping the iPhoto Library itself on the laptop. I know exactly how to do this from scratch

  • Movies and white on black settings

    When i go on road trips, i want to watch movies on itunes for up to six hours, is there a way that i can hit control-option-command-8 and have everything but the movie i am watching be reversed? thanks