Filegetname

Hi,
I´ve a problem while using the "filegetname" procedure from the DBMS_LOB package. I wanna get the alias-path and the filename from a stored bfile.
Trying this code Oracle throws an error(argument 2 is null, not valid or...)argument 2 is "DirAlias_name":
set serveroutput on;
CREATE OR REPLACE PROCEDURE getNameBFILE_proc IS
File_loc BFILE;
DirAlias_name VARCHAR2(50);
File_name VARCHAR2(40);
BEGIN
SELECT Anleitung INTO File_loc FROM Betriebsmittel
WHERE Nummer='yy';
DBMS_LOB.FILEGETNAME(File_loc,DirAlias_name, File_name);
DBMS_output.put_line(DirAlias_name || File_name);
END;
"Anleitung" is a column of the type BFILE from table "Betriebsmittel". The primary key column is "Nummer" and "yy" exists.
Thanx for any advice.
Toser Ban

I see that the output displayed UTL_DIR and NAME are all in CAPS. If the OS is Case Sensitive and if the DIRECTORY NAME and FILE NAME does not match, you are quite likely to the get 22285 error. Please check your Directory name and File name again.
Regards,
Murali Mohan

Similar Messages

  • Processing OS Files in an Oracle Directory

    I have an application that gets XML files and stores them in a directory. I'd like to write a PL/SQL program that I can schedule to process all files in the directory. I won't know at run time what the file names are, so I need a way to somehow loop through all files in the directory, do my processing, and exit when I've run out of files.
    I've been reviewing documentation and it doesn't look like fileGetName or fileExists will work for this type of processing, since they either assume a known file name or return the directory name, which I'll need to specify since there are multiple directories used by this process.
    In pseudo-code, here's what I have in mind:
    declare
    cursor all_files is
    select filename from xml_in; --xml_in is my Oracle directory where the files will live.
    eachFile all_files%ROWTYPE;
    begin
    open all_files;
    loop
    fetch all_files into eachFile;
    exit when all_files%NOTFOUND;
    --Do my XML processing here
    end loop;
    close all_files;
    end;
    Is it possible to do this kind of processing on external files? If so, how can I get something that would function like the cursor described above to work?

    The files are unknown to Oracle, I'm using an Oracle directory just as a save point for processing. I've got an external application written that will process the xml (actually, it calls an already-completed PL/SQL stored procedure) but I'd like to have portability between the different OS's.
    Short answer to your question...No.

  • Need help on Reading BFILE, CLOB

    Hi all
    i am using Linux fedora 4
    i have created a directory
    create directory clob_dir as '/db10g/my_dir';
    and created a table from examples of a book i have
    CREATE TABLE BFILE_DOC
    (     ID INTEGER,
         BFILE_CLMN BFILE
    And a procedure to read a text file contents
    CREATE OR REPLACE
    PROCEDURE FILE_EXAMPLE (id_var in number) AS
    SRC_BFILE_VAR BFILE;
    DIR_ALIAS_VAR VARCHAR2(50);
    FILENAME_VAR VARCHAR2(50);
    CHUNK_SIZE_VAR INTEGER;
    LENGTH_VAR INTEGER;
    CHARS_READ_VAR INTEGER;
    DEST_CLOB_VAR NCLOB;
    AMOUNT_VAR INTEGER := 80;
    DEST_OFFSET_VAR INTEGER := 1;
    SRC_OFFSET_VAR INTEGER := 1;
    CHAR_BUFFER_VAR VARCHAR2(160);
    BEGIN
    SELECT BFILE_CLMN
    INTO SRC_BFILE_VAR
    FROM BFILE_DOC
    WHERE ID = id_var;
    DBMS_LOB.CREATETEMPORARY(DEST_CLOB_VAR, TRUE);
    IF (DBMS_LOB.FILEEXISTS(SRC_BFILE_VAR) = 1) THEN
    IF (DBMS_LOB.FILEISOPEN(SRC_BFILE_VAR) = 0) THEN
    DBMS_LOB.FILEOPEN(SRC_BFILE_VAR);
    DBMS_LOB.FILEGETNAME(SRC_BFILE_VAR,
    DIR_ALIAS_VAR,
    FILENAME_VAR);
    DBMS_OUTPUT.PUT_LINE('DIRECTORY NAME: ' || DIR_ALIAS_VAR);
    DBMS_OUTPUT.PUT_LINE('FILE NAME : ' || FILENAME_VAR );
    CHUNK_SIZE_VAR := DBMS_LOB.GETCHUNKSIZE(DEST_CLOB_VAR);
    DBMS_OUTPUT.PUT_LINE('CHUNK SIZE : ' || CHUNK_SIZE_VAR);
    LENGTH_VAR := DBMS_LOB.GETLENGTH(SRC_BFILE_VAR);
    DBMS_OUTPUT.PUT_LINE('LENGTH : ' || LENGTH_VAR);
    CHARS_READ_VAR := 0;
    WHILE (CHARS_READ_VAR < LENGTH_VAR) LOOP
    IF (LENGTH_VAR - CHARS_READ_VAR < AMOUNT_VAR) THEN
    AMOUNT_VAR := LENGTH_VAR - CHARS_READ_VAR;
    END IF;
    DBMS_LOB.LOADFROMFILE(DEST_CLOB_VAR, SRC_BFILE_VAR,
    AMOUNT_VAR, DEST_OFFSET_VAR,
    SRC_OFFSET_VAR + CHARS_READ_VAR);
    DBMS_LOB.READ(DEST_CLOB_VAR,
    AMOUNT_VAR,
    SRC_OFFSET_VAR,
    CHAR_BUFFER_VAR);
    DBMS_OUTPUT.PUT_LINE('CHAR BUFFER VAR:' || CHAR_BUFFER_VAR);
    CHARS_READ_VAR := CHARS_READ_VAR + AMOUNT_VAR;
    END LOOP;
    END IF ;
    END IF;
    DBMS_LOB.FILECLOSE(SRC_BFILE_VAR);
    DBMS_LOB.FREETEMPORARY(DEST_CLOB_VAR);
    END FILE_EXAMPLE;
    then i post a text file ( the size is 456.5 KB) in MY_DIR FOLDER
    the i inserted the informatin in that table
    INSERT INTO BFILE_DOC( ID , BFILE_CLMN)
    VALUES (1, BFILENAME('CLOB_DIR', 'abc.txt'));
    Then i called the procedure
    SQL> call file_example(1);
    here what i got
    CHAR BUFFER VAR:噁‰㐳㔠〵㨲㔠††††††††††††††䥓单䕄㨠〷⼳〯〶†䩅䐠䉁卅†ਠⴭⴭⴭⴭ
    CHAR BUFFER VAR:†††ਠ㈹䙒††††㜷䈠⁇噁‰㔳㔠⁆剁‰†䥓单䕄㨠〷⼳〯〶†䩅䐠䉁卅†ਠⴭⴭⴭⴭ
    CHAR BUFFER VAR:㜰㔠〱㨳〠††††††††††††††††䥓单䕄㨠〷⼳〯〶†䩅䐠䉁卅†ਠⴭⴭⴭⴭ
    CHAR BUFFER VAR:†ਠ††††††䵁剉呉䴠䡏呅䰠††††††䥓单䕄㨠〷⼳〯〶†䩅䐠䉁卅†ਠⴭⴭⴭⴭ
    CHAR BUFFER VAR:††††〶㨵㔠〹㨵㔠〶㨵㔠⁆剁†㜷㨴〠ਠ†䥓单䕄㨠〷⼳〯〶†䩅䐠䉁卅†ਠⴭⴭⴭⴭ
    CHAR BUFFER VAR:〲䵏†‱㠶†㜷䈠⁆剁‱㈴㔠⁇噁‱㐰〠〱㨱†䥓单䕄㨠〷⼳〯〶†䩅䐠䉁卅†ਠⴭⴭⴭⴭ
    call file_example(1)
    ERROR at line 1:
    ORA-20000: ORU-10027: buffer overflow, limit of 1000000 bytes
    ORA-06512: at "SYS.DBMS_OUTPUT", line 32
    ORA-06512: at "SYS.DBMS_OUTPUT", line 97
    ORA-06512: at "SYS.DBMS_OUTPUT", line 112
    ORA-06512: at "SCOTT.FILE_EXAMPLE", line 51
    and here a sample of the content in the text file if i open it with text editor
    1 MO REPORT AT 12:35 EFFECTIVE SEP 04-SEP 18
    1 SA
    DAY FLT: EQP DEPARTS ARRIVES BLK. BLK: DUTY CR: LAYOVER
    MO 034 744 JED 1405 RUH 1540 01:35
    SAHARA AIRPORT HOTEL 01:35 03:35 01:35 RUH 19:05
    TU 1905 AB3 RUH 1045 TIF 1215 01:30
    TU 1904 AB3 TIF 1315 RUH 1440 01:25
    TU 1783 AB3 RUH 1540 GIZ 1730 01:50
    TU 1777 AB3 GIZ 1820 JED 1930 01:10
    05:55 10:45 05:55
    CREDIT_HRS: 07:30 BLK_HRS: 07:30 LDGS: 5 TAFB 31:25
    2 MO REPORT AT 21:25 EFFECTIVE SEP 04-SEP 18
    1 SA
    DAY FLT: EQP DEPARTS ARRIVES BLK. BLK: DUTY CR: LAYOVER
    MO 113 77B JED 2255 LHR 0520 06:25
    HILTON LONDON KENSIN 06:25 08:25 06:25 LHR 38:25
    WE 116 77B LHR 1945 JED 0150 06:05
    06:05 08:05 06:05
    CREDIT_HRS: 12:30 BLK_HRS: 12:30 LDGS: 2 TAFB 52:55
    ( the text file has more than 6000 line)
    notes:
    my ENV file ( bash_profile)
    # .db10g
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
         . ~/.bashrc
    fi
    # User specific environment and startup programs
    PATH=$PATH:$HOME/bin; export PATH
    ORACLE_BASE=/db10g/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
    ORACLE_SID=orcl; export ORACLE_SID
    ORACLE_TERM=xterm; export ORACLE_TERM
    PATH=/usr/sbin:$PATH; export PATH
    PATH=$ORACLE_HOME/bin:$PATH; export PATH
    NLS_LANG=AMERICAN_AMERICA.AL32UTF8; export NLS_LANG
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
    unset USERNAME
    The charset of the database is set to AL32UTF8. during the installtion time
    The questions :
    Whats wrong here?
    why i can not read the content of the txt file as it is ?
    i tried this issue in windows xp with SQL*PLUS, i got the same chars but no error.
    what to do to avoid the errors and to see the text file as its?
    how to load the content of the text file to CLOB Column if it is larger than 4000?
    thanks

    set serveroutput on
    BEGIN
    -- Enable DBMS_OUTPUT and set the buffer size. The buffer size can be between 1 and 1,000,000
    dbms_output.enable(1000000);
    END;
    check the datatypes of the supplied packages from the doumentation;
    dbms_output.put_line(item VARCHAR2);
    dbms_lob.read(
    lob_loc IN BLOB,
    amount IN OUT NOCOPY INTEGER,
    offset IN INTEGER,
    buffer OUT RAW);
    also sample usage of the package will help -> http://psoug.org/reference/dbms_lob.html

  • Oracle Reports : Run time error when there is a call to DBMS_LOB package

    I am facing a strange issue, please do share if you have some inputs. When I try running the compiled RDF report(Generating XML to be specific), Oracle Reports Builder crashes when I make use of the following formula function. Strangely, this works fine in the backend. Moreover I tried debugging and by trial and error method found out that, when there is a call to the DMBS_LOB package it errors (works fine when this is commented). Please do let me know whats the root cause of this issue. Thanks in advance
    function CF_ClientSignatureFormula return VARCHAR2 is
    file_name BFILE;
    dir_name VARCHAR2(100);
    dest_file_name VARCHAR2(100);
    dest_path VARCHAR2(400);
    begin
         SELECT client_signature
              INTO file_name
              FROM xxfpr.fpr_rcp_bank_details frb,
              Xxfpr. fpr_rcp_gtn_rpt_map frm
              WHERE frb.record_id = frm.bank_record_id
              AND frm.gtn_request_id = :p_gtn_request_id;
    SYS.DBMS_LOB.filegetname(file_name,dir_name,dest_file_name);
    SELECT directory_path INTO dest_path FROM all_directories where directory_name = dir_name;
    dest_path := dest_path || '/' || dest_file_name;
    return dest_path;
    EXCEPTION
         WHEN OTHERS THEN
              RETURN NULL;
    end;
    Thanks,
    NirmalGeo

    And what version of Reports are you using?
    BFILES are accessible from the database, not the client (Reports). So, put your code in the database.

  • ORA-06502/ORA-06512 at execution owa_util.mime_header

    Hi, APEX gurus!
    I try to write a procedure to display bfile contention /images/ into APEX page.
    I have a table :
    -TEMP_FLAGS (ID NUMBER(3) NOT NULL, NAME BFILE)
    - procedure display_country_flags_bfile
    display_country_flags_bfile (p_id NUMBER) is
    CURSOR c_flags(p_flag NUMBER) IS
    SELECT name
    FROM temp_flags_bfile
    WHERE id = p_flag;
    r_flags c_flags%ROWTYPE;
    v_bfile bfile;
    lgh_file number;
    v_dir_alias varchar2(256);
    v_filename varchar2(256);
    v_mime varchar2(255);
    begin
    open c_flags(p_id);
    fetch c_flags INTO r_flags;
    CLOSE c_flags;
    v_bfile := r_flags.name;
    dbms_lob.filegetname(v_bfile, v_dir_alias, v_filename);
    lgh_file := dbms_lob.getlength(v_bfile);
    Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly);
    owa_util.mime_header( nvl(v_mime,'application/octet'), FALSE );
    htp.p('Content-length: '||lgh_file);
    htp.p('Content-Disposition: attachment; filename="'||v_filename||'"');
    owa_util.http_header_close;
    wpg_docload.download_file(v_bfile);
    Dbms_Lob.Fileclose(v_bfile);
    end display_country_flags_bfile;
    If i execute directly in Toad i get error below:
    ORA-06502: PL/SQL: numeric or value error
    ORA-06512: at "SYS.OWA_UTIL", line 354
    ORA-06512: at "SYS.OWA_UTIL", line 413
    ORA-06512: at "STAT.DISPLAY_COUNTRY_FLAGS_BFILE", line 20
    ORA-06512: at line 1
    In Report attributes of APEX page, i use HTML expression to populate column value as call this procedure with appropriate parameter but image just not showing.
    I appreciate any help and opinion.
    P.S. I'm a newbie in APEX and have minimal experience.
    P.S.2 I forgot - Oracle 10g XE and APEX 2.1 built-in
    Thanks, Rado
    Edited by: user7637288 on 16-Dec-2008 05:12

    Thanks, rafix.
    But i'm using Oracle XE with storage limit /1GB/ and i don't want store any images in database. I prefer to use bfile type with link to files on OS level.
    By the way , just for tests, i try to use blobs on my own table with simular procedure, which throws the same error - with owa_util.mime_header. And think that the problem is related to owa_util package.
    My APEX version is 2.1 - built-in in Oracle XE, not 3.1

  • BFILE Errors related to Directory

    Hi,
    For the code below related to BFILE operations, despite of showing the Directory path and the file name, ORA-22285 is thrown. Could some one help out resolving the problem.
    Code:
    DECLARE
    VFile          BFILE;
    NAME          VARCHAR2(2000);
    UTL_DIR     VARCHAR2(2000);
    BEGIN
    SELECT XML_FILE
    INTO VFile
    FROM SPE_TXML;
    DBMS_LOB.FILEGETNAME(VFile, UTL_DIR, NAME);
    DBMS_OUTPUT.PUT_LINE('UTL_DIR '||UTL_DIR);
    DBMS_OUTPUT.PUT_LINE('NAME '||NAME);
    DBMS_LOB.FILEOPEN ( VFile , DBMS_LOB.FILE_READONLY);
    DBMS_LOB.FILECLOSE ( VFile);
    EXCEPTION
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('ERR '||SQLERRM);
    END;
    Output:
    UTL_DIR F:\FLCCMS\PROD_UTL_DIR
    NAME SPE.XML
    ERR ORA-22285: non-existent directory or file for FILEOPEN operation
    Thanks n Regds,
    Jaikanth

    I see that the output displayed UTL_DIR and NAME are all in CAPS. If the OS is Case Sensitive and if the DIRECTORY NAME and FILE NAME does not match, you are quite likely to the get 22285 error. Please check your Directory name and File name again.
    Regards,
    Murali Mohan

  • EXTERNAL LOB (BFILE) 처리 예제 프로그램

    제품 : PRECOMPILERS
    작성날짜 : 1998-09-15
    EXTERNAL LOB (BFILE) 처리 예제 프로그램
    ======================================
    BFILE type은 화일시스템에 존재하는 FILE을 가리키는 LOCATOR를 저장하는 데이타
    타입이다. 이 LOCATOR는 디렉토리 ALIAS, FILENAME, 기타 상태 정보를 포함하고
    있다. BFILE은 Directory를 통해 access될 수 있다.
    디렉토리란 시스템 상의 물리적 디렉토리를 논리적으로 매핑한 alias명을 말한다.
    이 오브젝트는 시스템 소유로서, 디렉토리를 생성/삭제하기 위해서는 create[drop]
    any directory 권한이 있어야 한다. sys로 connect하여 grant를 실행한다.
    SQL> grant create any directory to scott;
    디렉토리 생성 시는 실제 디렉토리가 있는지 여부는 확인하지 않는다는 점을 주의
    해야 한다. 현재 생성된 디렉토리와 관련된 정보는 all_directories,
    dba_directories를 조회하면 확인 가능하다.
    Bfile은 pointer 형태로 저장하기 때문에, 여러 record에서 동일한 file을 value
    로 가질 수 있다. file에 대한 처리는 Read만 가능하고, 디렉토리와 마찬가지로
    BFILE 컬럼에 insert 시 oracle process가 read 권한이 있는지 여부는 확인하지
    않는다.
    이는 insert하는 user가 미리 확인해야 한다. 하나의 세션에서 동시에 열 수 있는
    file 개수는 session_max_open_files parameter에 의해 제한받는다.
    1) 사전 수행 SQL 문
    SQL> connect sys/manager
    SQL> grant create any directory to scott;
    SQL> connect scott/tiger
    SQL> create or replace directory bfile_dir as '/mnt3/rctest80/';
    SQL> create table image_file
    2 (a varchar2(10),
    3 b bfile);
    SQL> desc blobs
    Name Null? Type
    ID VARCHAR2(255)
    BLOB_COL BLOB
    2) 프로그램 예제
    #include <stdio.h>
    #include <sqlca.h>
    char username[10] ="ejpark";
    char password[10] ="ejpark";
    char i_rep_file_dir[20];
    char i_rep_file_name[20];
    void sql_error();
    main()
    EXEC SQL WHENEVER SQLERROR DO sql_error("oracle error --");
    EXEC SQL CONNECT :username IDENTIFIED BY :password;
    printf(" DB connected \n");
    /* bfile 컬럼을 insert */
    EXEC SQL INSERT INTO image_file VALUES
    ('abc' , bfilename('BFILE_DIR','a30.bmp') );
    printf(" Bfile inserted \n");
    EXEC SQL COMMIT ;
    EXEC SQL EXECUTE
    DECLARE
    i_rep_file BFILE;
    temp_blob BLOB;
    v_rqid NUMBER;
    len NUMBER;
    BEGIN
    /* bfile 컬럼을 select */
    SELECT b INTO i_rep_file FROM image_file WHERE a='abc';
    IF i_rep_file is not null THEN
    IF DBMS_LOB.fileisopen(i_rep_file) = 1 THEN
    DBMS_LOB.fileclose(i_rep_file);
    END IF;
    DBMS_LOB.FILEGETNAME(i_rep_file,:i_rep_file_dir,:i_rep_file_name);
    len := DBMS_LOB.GETLENGTH(i_rep_file);
    /* 해당 데이타 화일을 읽어 lob table에 insert */
    INSERT INTO blobs VALUES ('abc', empty_blob())
    RETURNING blob_col INTO temp_blob;
    DBMS_LOB.FILEOPEN(i_rep_file, dbms_lob.file_readonly);
    DBMS_LOB.LOADFROMFILE(temp_blob,i_rep_file,len);
    DBMS_LOB.FILECLOSE(i_rep_file);
    END IF;
    COMMIT;
    END;
    END-EXEC;
    printf("name %s %s", i_rep_file_dir,i_rep_file_name);
    void sql_error(msg)
    char* msg;
    char err_msg[130];
    int buf_len, msg_len;
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    printf("\n%s\n",msg);
    buf_len = sizeof(err_msg);
    sqlglm(err_msg, &buf_len, &msg_len);
    printf("%.*s\n", msg_len, err_msg);
    EXEC SQL ROLLBACK RELEASE;
    exit(1);
    }

  • BFILE로 저장된 데이타 정보를 확인하는 방법

    제품 : ORACLE SERVER
    작성날짜 : 2002-04-12
    BFILE로 저장된 데이타 정보를 확인하는 방법
    ==========================================
    Purpose
    Bfile 로 저장된 column의 경우 database 내에서는 file path만 알 수 있다.
    여러가지 package를 사용하여 이 bfile로 저장된 data의 정보를 확인하는
    방법을 알아보자.
    Example
    $ vi bfiletest.sql
    rem BFILE Example
    set echo on
    set serveroutput on;
    drop directory some_dir_alias;
    create directory some_dir_alias as '/mnt3/rctest80/server/ejlee/bfile';
    drop table bfiletest;
    create table bfiletest (
    doc_id number,
    doc_file bfile
    insert into bfiletest values (1,bfilename('SOME_DIR_ALIAS','docu1.txt'));
    declare
    i_doc_file BFILE;
    i_file_size NUMBER;
    i_doc_file_dir VARCHAR2(30);
    i_doc_file_name VARCHAR2(2000);
    buffer varchar2(100);
    amount binary_integer:=5;
    offset NUMBER := 2;
    begin
    select doc_file into i_doc_file from bfiletest where doc_id=1;
    if i_doc_file is not null then
    if dbms_lob.fileisopen(i_doc_file) = 1 then
    dbms_output.put_line('file is open so we are closing file');
    dbms_lob.fileclose(i_doc_file);
    end if;
    dbms_lob.filegetname(i_doc_file,i_doc_file_dir,i_doc_file_name);
    dbms_output.put_line('DIRECTORY: ' || i_doc_file_dir);
    dbms_output.put_line('Name : ' || i_doc_file_name);
    i_doc_file:=BFILENAME(i_doc_file_dir,i_doc_file_name);
    dbms_lob.fileopen(i_doc_file,DBMS_LOB.FILE_READONLY);
    dbms_lob.read(i_doc_file, amount, offset, buffer);
    dbms_output.put_line('Buffer is :'||utl_raw.cast_to_varchar2(buffer));
    i_file_size:=DBMS_LOB.GETLENGTH(i_doc_file);
    dbms_output.put_line('Length is '||i_file_size);
    end if;
    end;
    실행 결과
    SQL> @bfiletest
    SQL> set echo on
    SQL> set serveroutput on;
    SQL> drop directory some_dir_alias;
    Directory dropped.
    SQL> create directory some_dir_alias as '/mnt3/rctest80/server/ejlee/bfile';
    Directory created.
    SQL>
    SQL> drop table bfiletest;
    Table dropped.
    SQL> create table bfiletest (
    2 doc_id number,
    3 doc_file bfile
    4 );
    Table created.
    SQL> insert into bfiletest values (1,bfilename('SOME_DIR_ALIAS','docu1.txt'));
    1 row created.
    SQL> commit;
    SQL> declare
    2 i_doc_file BFILE;
    3 i_file_size NUMBER;
    4 i_doc_file_dir VARCHAR2(30);
    5 i_doc_file_name VARCHAR2(2000);
    6 buffer varchar2(100);
    7 amount binary_integer:=5;
    8 offset NUMBER := 2;
    9 begin
    10 select doc_file into i_doc_file from bfiletest where doc_id=1;
    11 if i_doc_file is not null then
    12 if dbms_lob.fileisopen(i_doc_file) = 1 then
    13 dbms_output.put_line('file is open so we are closing file');
    14 dbms_lob.fileclose(i_doc_file);
    15 end if;
    16 dbms_lob.filegetname(i_doc_file,i_doc_file_dir,i_doc_file_name);
    17 dbms_output.put_line('DIRECTORY: ' || i_doc_file_dir);
    18 dbms_output.put_line('Name : ' || i_doc_file_name);
    19 i_doc_file:=BFILENAME(i_doc_file_dir,i_doc_file_name);
    20 dbms_lob.fileopen(i_doc_file,DBMS_LOB.FILE_READONLY);
    21 dbms_lob.read(i_doc_file, amount, offset, buffer);
    22 dbms_output.put_line('Buffer is :'||utl_raw.cast_to_varchar2(buffer));
    23 i_file_size:=DBMS_LOB.GETLENGTH(i_doc_file);
    24 dbms_output.put_line('Length is '||i_file_size);
    25 end if;
    26 end;
    27 /
    DIRECTORY: SOME_DIR_ALIAS
    Name : docu1.txt
    Buffer is :his i
    Length is 15
    PL/SQL procedure successfully completed.

  • FileNameGet with only 1 file chosen

    Hello,
    we have a student working on an autosequence that uses the FileNameGet function to get a list of the files in a directory and then list them in a ListBox on a userform. The problem is that, when only one file is chosen (in mulit-select mode), the .dat ending is no longer on the file name. If more than one file is chosen, then all have the .dat ending on the file names. This problem DOES NOT occure on DiaDem 8.X, but only on 9.x (Save sequence, 2 computers). Was there anything changed with the FileGetName function between 8.x and 9.x??
    A copy of his code is below:
    Sub Btn_Sel_Data_EventClick()
    Dim This : Set This = Btn_Sel_Data
    Pfad="Seq_File_List.txt"
    Call FileClose(Pfad) ' Close file in case it is already opened
    ' Call the "Open File" Dialog "Any" specifies that multiple files can be selected
    ' The list of data files are saved in the "Seq_File_Listtxt" File
    Call FileNameGet("ANY","FileRead", "*.dat",".dat",Pfad ,1 , "Please Select data file.")
    Call FileClose(Pfad)
    If (DlgState = "IDOk") Then ' If OK was pressed and not Cancel
    Call FileOpen(Pfad,2) ' 2= Read only
    I=1
    T1= FR(Pfad,i)
    Do While T1<>"EOF"
    If instr(T1,"dat")<1 Then
    t1=t1 & ".dat" ' Quick fix for the problem
    End If
    LB1_.Items.add T1, I
    ' Loop to next file
    I=I+1
    T1= FR(Pfad,i)
    Loop
    Call FileClose(Pfad)
    End If
    End Sub
    Any assistance would be appreciated.
    Jeff

    Hi Jeff B.,
    This was a bug in DIAdem 9.0 SP1, which was fixed in DIAdem 9.0 SP1a. Both the service packs are free, and the latest (SP1a) is still available for download at:
    http://digital.ni.com/softlib.nsf/webcategories/85256410006C055586256BBB002C104B?opendocument&node=132070_US
    If for some reason you are experiencing this problem with a version of DIAdem other than DIAdem 9.0 SP1, please let us know. I have not seen this problem in DIAdem 9.1.
    Regards,
    Brad Turpin
    DIAdem Product Support Engineer
    National Instruments

  • FND Attachements Conversion

    Hi,
    I m working on Attachments conversion from 11i to r12, I m getting Attachment in BLOB column from custom table xx_attch_data.
    I have seen a sample in online which has below part before calling fnd_attached_documents_pkg.
    Since I m getting Attachment from custom table xx_attch_data from BLOB column, how should i handle below part of the code.
        -- Oracle creates BFILE_DIR directory by default in the database
                                        fils := BFILENAME ('BFILE_DIR', l_var_tab(I).file_name_lob);
                                        l_fileisopen := DBMS_LOB.fileisopen (fils);
                                        l_fileexists := DBMS_LOB.fileexists (fils);
                                        DBMS_LOB.filegetname (fils,l_dirname,l_location);
                                        -- Obtain the size of the BLOB file
                                        DBMS_LOB.fileopen (fils, DBMS_LOB.file_readonly);
                                        blob_length := DBMS_LOB.getlength (fils);
                                        DBMS_LOB.fileclose (fils);
    Thanks.

    Hi Hussein,
    Below is my code, could you tell me how to handle the attachment which is coming from BLOB column from staging table.
    CREATE OR REPLACE PACKAGE BODY xxath_conv
    IS
    PROCEDURE Main(errbuf  OUT VARCHAR2
                  ,retcode OUT VARCHAR2)
    IS
    CURSOR cur_fnd_data
    IS
    SELECT * FROM xx_ap_attach_stg; 
    TYPE l_rec_type IS TABLE OF cur_fnd_data%ROWTYPE
    INDEX BY PLS_INTEGER;
    i                    PLS_INTEGER;
    l_var_tab            l_rec_type;
    l_empty_tab          l_rec_type;
    l_rowid              ROWID;
    x_blob               BLOB;
    fils                 BFILE;
    blob_length          INTEGER;
    l_fileisopen         INTEGER;
    l_fileexists         INTEGER;
    l_dirname            VARCHAR2 (30);
    l_location           VARCHAR2 (500);
    l_valid_flag         VARCHAR2(1):= 'Y';
    l_vendor_exists      ap_suppliers.segment1%TYPE;
    l_requis_exists      po_requisition_headers_all.segment1%TYPE;
    l_ap_invoice_exists  ap_invoices_all.invoice_num%TYPE;
    l_po_exists          po_headers_all.segment1%TYPE;
    BEGIN
        OPEN cur_fnd_data;
      LOOP
      FETCH cur_fnd_data BULK COLLECT INTO l_var_tab LIMIT 1000;
      EXIT WHEN l_var_tab.COUNT = 0;
      l_valid_flag        := 'Y';
      l_vendor_exists     := NULL;
      l_requis_exists     := NULL;
      l_ap_invoice_exists := NULL;
      l_po_exists         := NULL;
            FOR i IN 1..l_var_tab.COUNT
            LOOP
         IF l_var_tab(I).entity_name = 'PO_VENDORS'
      THEN
                       --All validations comes here
      END IF;
                      IF l_valid_flag = 'Y'
                      THEN
                      -- how to handle below part, since i m getting attachment file from BLOB column in xx_ap_attach_stg table.
                                        fils := BFILENAME ('BFILE_DIR', l_var_tab(I).file_name_lob);
                                        l_fileisopen := DBMS_LOB.fileisopen (fils);
                                        l_fileexists := DBMS_LOB.fileexists (fils);
                                        DBMS_LOB.filegetname (fils,l_dirname,l_location);
                                        -- Obtain the size of the BLOB file
                                        DBMS_LOB.fileopen (fils, DBMS_LOB.file_readonly);
                                        blob_length := DBMS_LOB.getlength (fils);
                                        DBMS_LOB.fileclose (fils);
          INSERT INTO fnd_lobs
                                              ( file_id
               , file_name
               , file_content_type
               , upload_date
               , expiration_date
               , program_name
               , program_tag
               , file_data
               , LANGUAGE
               , oracle_charset
               , file_format)
                                      VALUES
               ( l_var_tab(I).media_id
               , l_var_tab(I).file_name_lob
               , l_var_tab(I).file_content_type 
               , SYSDATE
               , NULL
               , 'FNDATTCH'
               , NULL
               , EMPTY_BLOB ()
               , 'US'
               , 'UTF8'
               , 'binary')
                                      RETURNING file_data
                                      INTO x_blob;
      -- Load the file into the database as a BLOB
                                      DBMS_LOB.OPEN (fils, DBMS_LOB.lob_readonly);
                                      DBMS_LOB.OPEN (x_blob, DBMS_LOB.lob_readwrite);
                                      DBMS_LOB.loadfromfile (x_blob, fils, blob_length);   -- Close handles to blob and file
                                      DBMS_LOB.CLOSE (x_blob);
                                      DBMS_LOB.CLOSE (fils);
                       COMMIT;
                       --DBMS_OUTPUT.put_line ('FND_LOBS File Id Created is ' || l_var_tab(I).media_id);
                  BEGIN
                   fnd_attached_documents_pkg.insert_row
                                     ( X_ROWID                        => l_rowid
                                     , X_ATTACHED_DOCUMENT_ID         => l_var_tab(I).attached_document_id 
                                     , X_DOCUMENT_ID                  => l_var_tab(I).document_id
                                     , X_CREATION_DATE                => SYSDATE
                                     , X_CREATED_BY                   => fnd_profile.value('USER_ID')
                                     , X_LAST_UPDATE_DATE             => SYSDATE
                                     , X_LAST_UPDATED_BY              => fnd_profile.value('USER_ID')
                                     , X_LAST_UPDATE_LOGIN            => fnd_profile.value('LOGIN_ID')
                                     , X_SEQ_NUM                      => l_var_tab(I).seq_num
                                     , X_ENTITY_NAME                  => l_var_tab(I).entity_name
                                     , X_COLUMN1                      => NULL
                                     , X_PK1_VALUE                    => l_var_tab(I).pk1_value
                                     , X_PK2_VALUE                    => NULL
                                     , X_PK3_VALUE                    => NULL
                                     , X_PK4_VALUE                    => NULL
                                     , X_PK5_VALUE                    => NULL
                                     , X_AUTOMATICALLY_ADDED_FLAG     => 'N'
                                     , X_DATATYPE_ID                  => l_var_tab(I).datatype_id
                                     , X_CATEGORY_ID                  => l_var_tab(I).category_id
                                     , X_SECURITY_TYPE                => l_var_tab(I).security_type 
                                     , X_SECURITY_ID                  => l_var_tab(I).security_id
                                    , X_PUBLISH_FLAG                 => l_var_tab(I).publish_flag
                                     , X_LANGUAGE                     => l_var_tab(I).language
                                     , X_DESCRIPTION                  => l_var_tab(I).description
                                     , X_FILE_NAME                    => l_var_tab(I).file_name
                                     , X_MEDIA_ID                     => l_var_tab(I).media_id
      COMMIT;
      EXCEPTION 
      WHEN OTHERS THEN
      fnd_file.put_line(fnd_file.LOG,'Error after calling fnd_attached_documents_pkg: '||SQLERRM); 
      END;
                      ELSE
                        UPDATE xx_ap_attach_stg
                         SET    upload_flag          = 'N'
                         WHERE  entity_name          = l_var_tab(I).entity_name
                         AND    seq_num              = l_var_tab(I).seq_num
                         AND    pk1_value            = l_var_tab(I).pk1_value
                        AND    attached_document_id = l_var_tab(I).attached_document_id
                        AND    document_id          = l_var_tab(I).document_id;     
                      END IF;
            END LOOP;
      END LOOP;
      CLOSE cur_fnd_data;
    EXCEPTION
    WHEN OTHERS THEN
    fnd_file.put_line(fnd_file.LOG,'Error in Main Procedure: '||SQLERRM);
    END Main;
    END xxath_conv;

  • Load BLOB

    Hi
    oracle 10.2.0.1.0
    I tried the following code
    CREATE OR REPLACE PROCEDURE load_lob AS
      id         NUMBER;
      image1     BLOB;
      locator    BFILE;
      bfile_len  NUMBER;
      bf_desc    VARCHAR2(30);
      bf_name    VARCHAR2(30);
      bf_dir     VARCHAR2(30);
      bf_typ     VARCHAR2(4);
      ctr integer;
      CURSOR get_id IS
        SELECT bfile_id,bfile_desc,bfile_type FROM graphics_table;
    BEGIN
      OPEN get_id;
    LOOP
      FETCH get_id INTO id, bf_desc, bf_typ;
      EXIT WHEN get_id%notfound;
      dbms_output.put_line('ID: '||to_char(id));
      SELECT bfile_loc INTO locator FROM graphics_table WHERE bfile_id=id;
      dbms_lob.filegetname(locator,bf_dir,bf_name);
      dbms_output.put_line('Dir: '||bf_dir);
      dbms_lob.fileopen(locator,dbms_lob.file_readonly);
      bfile_len:=dbms_lob.getlength(locator);
      dbms_output.put_line('ID: '||to_char(id)||' length: '||to_char(bfile_len));
      SELECT temp_blob INTO image1 FROM temp_blob;---- whr error occurs
      bfile_len:=dbms_lob.getlength(locator);
      dbms_lob.loadfromfile(image1,locator,bfile_len,1,1);
      INSERT INTO internal_graphics VALUES (id,bf_desc,image1,bf_typ);
      dbms_output.put_line(bf_desc||' Length: '||TO_CHAR(bfile_len)||
      ' Name: '||bf_name||' Dir: '||bf_dir||' '||bf_typ);
      dbms_lob.fileclose(locator);
    END LOOP;
    END;its says that temp_blob table does not exists . please help

    So, the question is really temp_blob exists ? Can you query temp_blob from SQL Plus ? If yes, then Can you query it from SQL Plus after using SET ROLE NONE ?

  • Oracle 9i clob segment possible corruption

    Hello all,
    We are experiencing some select issues from a table containing a CLOB segment. Since I don't know too much about CLOBs and we are suspecting a possible corruption. What would be the next step besides a DBV on the datafile housing hat table?
    I have read that there is a package called DBMS_LOB ... but not sure how to use
    Much appreciated

    Corruption? logical or physical?
    SQL> desc dbms_lob
    PROCEDURE APPEND
    Argument Name               Type               In/Out Default?
    DEST_LOB               BLOB               IN/OUT
    SRC_LOB               BLOB               IN
    PROCEDURE APPEND
    Argument Name               Type               In/Out Default?
    DEST_LOB               CLOB               IN/OUT
    SRC_LOB               CLOB               IN
    PROCEDURE CLOSE
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    PROCEDURE CLOSE
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    PROCEDURE CLOSE
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN/OUT
    FUNCTION COMPARE RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_1                    BLOB               IN
    LOB_2                    BLOB               IN
    AMOUNT                NUMBER(38)          IN     DEFAULT
    OFFSET_1               NUMBER(38)          IN     DEFAULT
    OFFSET_2               NUMBER(38)          IN     DEFAULT
    FUNCTION COMPARE RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_1                    CLOB               IN
    LOB_2                    CLOB               IN
    AMOUNT                NUMBER(38)          IN     DEFAULT
    OFFSET_1               NUMBER(38)          IN     DEFAULT
    OFFSET_2               NUMBER(38)          IN     DEFAULT
    FUNCTION COMPARE RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    FILE_1                BINARY FILE LOB      IN
    FILE_2                BINARY FILE LOB      IN
    AMOUNT                NUMBER(38)          IN
    OFFSET_1               NUMBER(38)          IN     DEFAULT
    OFFSET_2               NUMBER(38)          IN     DEFAULT
    PROCEDURE CONVERTTOBLOB
    Argument Name               Type               In/Out Default?
    DEST_LOB               BLOB               IN/OUT
    SRC_CLOB               CLOB               IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN/OUT
    SRC_OFFSET               NUMBER(38)          IN/OUT
    BLOB_CSID               NUMBER               IN
    LANG_CONTEXT               NUMBER(38)          IN/OUT
    WARNING               NUMBER(38)          OUT
    PROCEDURE CONVERTTOCLOB
    Argument Name               Type               In/Out Default?
    DEST_LOB               CLOB               IN/OUT
    SRC_BLOB               BLOB               IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN/OUT
    SRC_OFFSET               NUMBER(38)          IN/OUT
    BLOB_CSID               NUMBER               IN
    LANG_CONTEXT               NUMBER(38)          IN/OUT
    WARNING               NUMBER(38)          OUT
    PROCEDURE COPY
    Argument Name               Type               In/Out Default?
    DEST_LOB               BLOB               IN/OUT
    SRC_LOB               BLOB               IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN     DEFAULT
    SRC_OFFSET               NUMBER(38)          IN     DEFAULT
    PROCEDURE COPY
    Argument Name               Type               In/Out Default?
    DEST_LOB               CLOB               IN/OUT
    SRC_LOB               CLOB               IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN     DEFAULT
    SRC_OFFSET               NUMBER(38)          IN     DEFAULT
    PROCEDURE CREATETEMPORARY
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    CACHE                    BOOLEAN           IN
    DUR                    BINARY_INTEGER          IN     DEFAULT
    PROCEDURE CREATETEMPORARY
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    CACHE                    BOOLEAN           IN
    DUR                    BINARY_INTEGER          IN     DEFAULT
    PROCEDURE ERASE
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    AMOUNT                NUMBER(38)          IN/OUT
    OFFSET                NUMBER(38)          IN     DEFAULT
    PROCEDURE ERASE
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    AMOUNT                NUMBER(38)          IN/OUT
    OFFSET                NUMBER(38)          IN     DEFAULT
    PROCEDURE FILECLOSE
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN/OUT
    PROCEDURE FILECLOSEALL
    FUNCTION FILEEXISTS RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    PROCEDURE FILEGETNAME
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    DIR_ALIAS               VARCHAR2          OUT
    FILENAME               VARCHAR2          OUT
    FUNCTION FILEISOPEN RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    PROCEDURE FILEOPEN
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN/OUT
    OPEN_MODE               BINARY_INTEGER          IN     DEFAULT
    PROCEDURE FREETEMPORARY
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    PROCEDURE FREETEMPORARY
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    FUNCTION GETCHUNKSIZE RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    FUNCTION GETCHUNKSIZE RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    FUNCTION GETLENGTH RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    FUNCTION GETLENGTH RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    FUNCTION GETLENGTH RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    FUNCTION GET_STORAGE_LIMIT RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    FUNCTION GET_STORAGE_LIMIT RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    FUNCTION INSTR RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    PATTERN               RAW               IN
    OFFSET                NUMBER(38)          IN     DEFAULT
    NTH                    NUMBER(38)          IN     DEFAULT
    FUNCTION INSTR RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    PATTERN               VARCHAR2          IN
    OFFSET                NUMBER(38)          IN     DEFAULT
    NTH                    NUMBER(38)          IN     DEFAULT
    FUNCTION INSTR RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    PATTERN               RAW               IN
    OFFSET                NUMBER(38)          IN     DEFAULT
    NTH                    NUMBER(38)          IN     DEFAULT
    FUNCTION ISOPEN RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    FUNCTION ISOPEN RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    FUNCTION ISOPEN RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    FUNCTION ISTEMPORARY RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    FUNCTION ISTEMPORARY RETURNS NUMBER(38)
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    PROCEDURE LOADBLOBFROMFILE
    Argument Name               Type               In/Out Default?
    DEST_LOB               BLOB               IN/OUT
    SRC_BFILE               BINARY FILE LOB      IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN/OUT
    SRC_OFFSET               NUMBER(38)          IN/OUT
    PROCEDURE LOADCLOBFROMFILE
    Argument Name               Type               In/Out Default?
    DEST_LOB               CLOB               IN/OUT
    SRC_BFILE               BINARY FILE LOB      IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN/OUT
    SRC_OFFSET               NUMBER(38)          IN/OUT
    BFILE_CSID               NUMBER               IN
    LANG_CONTEXT               NUMBER(38)          IN/OUT
    WARNING               NUMBER(38)          OUT
    PROCEDURE LOADFROMFILE
    Argument Name               Type               In/Out Default?
    DEST_LOB               BLOB               IN/OUT
    SRC_LOB               BINARY FILE LOB      IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN     DEFAULT
    SRC_OFFSET               NUMBER(38)          IN     DEFAULT
    PROCEDURE LOADFROMFILE
    Argument Name               Type               In/Out Default?
    DEST_LOB               CLOB               IN/OUT
    SRC_LOB               BINARY FILE LOB      IN
    AMOUNT                NUMBER(38)          IN
    DEST_OFFSET               NUMBER(38)          IN     DEFAULT
    SRC_OFFSET               NUMBER(38)          IN     DEFAULT
    PROCEDURE OPEN
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    OPEN_MODE               BINARY_INTEGER          IN
    PROCEDURE OPEN
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    OPEN_MODE               BINARY_INTEGER          IN
    PROCEDURE OPEN
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN/OUT
    OPEN_MODE               BINARY_INTEGER          IN     DEFAULT
    PROCEDURE READ
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    AMOUNT                NUMBER(38)          IN/OUT
    OFFSET                NUMBER(38)          IN
    BUFFER                RAW               OUT
    PROCEDURE READ
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    AMOUNT                NUMBER(38)          IN/OUT
    OFFSET                NUMBER(38)          IN
    BUFFER                VARCHAR2          OUT
    PROCEDURE READ
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    AMOUNT                NUMBER(38)          IN/OUT
    OFFSET                NUMBER(38)          IN
    BUFFER                RAW               OUT
    FUNCTION SUBSTR RETURNS RAW
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN
    AMOUNT                NUMBER(38)          IN     DEFAULT
    OFFSET                NUMBER(38)          IN     DEFAULT
    FUNCTION SUBSTR RETURNS VARCHAR2
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN
    AMOUNT                NUMBER(38)          IN     DEFAULT
    OFFSET                NUMBER(38)          IN     DEFAULT
    FUNCTION SUBSTR RETURNS RAW
    Argument Name               Type               In/Out Default?
    FILE_LOC               BINARY FILE LOB      IN
    AMOUNT                NUMBER(38)          IN     DEFAULT
    OFFSET                NUMBER(38)          IN     DEFAULT
    PROCEDURE TRIM
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    NEWLEN                NUMBER(38)          IN
    PROCEDURE TRIM
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    NEWLEN                NUMBER(38)          IN
    PROCEDURE WRITE
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    AMOUNT                NUMBER(38)          IN
    OFFSET                NUMBER(38)          IN
    BUFFER                RAW               IN
    PROCEDURE WRITE
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    AMOUNT                NUMBER(38)          IN
    OFFSET                NUMBER(38)          IN
    BUFFER                VARCHAR2          IN
    PROCEDURE WRITEAPPEND
    Argument Name               Type               In/Out Default?
    LOB_LOC               BLOB               IN/OUT
    AMOUNT                NUMBER(38)          IN
    BUFFER                RAW               IN
    PROCEDURE WRITEAPPEND
    Argument Name               Type               In/Out Default?
    LOB_LOC               CLOB               IN/OUT
    AMOUNT                NUMBER(38)          IN
    BUFFER                VARCHAR2          IN
    SQL>

  • Updating row with a blob value

    Hi, I get the following error when trying to update a row with a Blob value. I am using a Bfile as the external file ref. to put into the Blob.
    ORA-22920: row containing the LOB value is not locked
    The code that I'm using is the following:
    PROCEDURE IOSYS_PCT.insert_blob AS
    length NUMBER;
    image BLOB;
    image_file BFILE;
    bf_dir VARCHAR2(40);
    bf_name VARCHAR2(40);
    BEGIN
    SELECT temp_blob INTO image FROM temp_blob; /*initialise image with empty_blob()*/
    SELECT image_sm, image_sm_file INTO image, image_file FROM images WHERE
    file_id=1;
    dbms_lob.filegetname(image_file,bf_dir,bf_name);
    DBMS_LOB.FILEOPEN(image_file,DBMS_LOB.FILE_READONLY);
    LOCK TABLE images IN ROW EXCLUSIVE MODE;
    length := DBMS_LOB.GETLENGTH(image_file);
    DBMS_LOB.LOADFROMFILE(image,image_file,DBMS_LOB.GETLENGTH(image_file));
    DBMS_LOB.FILECLOSE(image_file);
    UPDATE images SET image_sm = image WHERE file_id=1;
    END;
    Please help as I have ran out of ideas what could be wrong.
    Thanx Andre
    null

    Hi, I get the following error when trying to update a row with a Blob value. I am using a Bfile as the external file ref. to put into the Blob.
    ORA-22920: row containing the LOB value is not locked
    The code that I'm using is the following:
    PROCEDURE IOSYS_PCT.insert_blob AS
    length NUMBER;
    image BLOB;
    image_file BFILE;
    bf_dir VARCHAR2(40);
    bf_name VARCHAR2(40);
    BEGIN
    SELECT temp_blob INTO image FROM temp_blob; /*initialise image with empty_blob()*/
    SELECT image_sm, image_sm_file INTO image, image_file FROM images WHERE
    file_id=1;
    dbms_lob.filegetname(image_file,bf_dir,bf_name);
    DBMS_LOB.FILEOPEN(image_file,DBMS_LOB.FILE_READONLY);
    LOCK TABLE images IN ROW EXCLUSIVE MODE;
    length := DBMS_LOB.GETLENGTH(image_file);
    DBMS_LOB.LOADFROMFILE(image,image_file,DBMS_LOB.GETLENGTH(image_file));
    DBMS_LOB.FILECLOSE(image_file);
    UPDATE images SET image_sm = image WHERE file_id=1;
    END;
    Please help as I have ran out of ideas what could be wrong.
    Thanx Andre
    null

  • DBMS_lob Parameters/Arguments

    Hello all!
    Can anyone point me to the correct documentation that contains a list of parameters/arguments for DBMS_lob calls? I have the developers guide that deals with LOBs, but haven't found a list of arguments yet. In particular, I am looking for the following:
    DBMS_lob.WRITE
    DBMS_lob.WRITEAPPEND
    DBMS_lob.APPEND
    DBMS_lob.FILEOPEN
    DBMS_lob.FILEGETNAME
    DBMS_lob.SUBSTR
    Any help would be greatly appreciated. Thank you!
    Steve

    http://download-east.oracle.com/docs/cd/B10501_01/appdev.920/a96612/d_lob2.htm#998404

Maybe you are looking for

  • Palm Desk Top 6.2, a step backwards?

    I use the Palm desktop considerably for my work schedule. I just got a new laptop which came with Vista. I downloaded the latest Palm desktop (6.2.2) and while the program works I am very disappointed that some of the features of the old version are

  • Bouts of packet loss and complete loss of connection

    Ok forum, I give up! I need your help. I have an E1200 and am time out and packet loss issues. The internet connection is fine for 30 seconds to five minuets and then everything times out for 15-20 seconds. Although it's only a minor incontinence to

  • Change y-axis BACK to auto/ auto for max min

    I have a bar chart and the settings for my y-axis are 250/auto. I need it to revert back to auto/auto for max/min b/c one of my numbers is large and is shooting off the graph.

  • .DS and Network....what are these and why wont they go away

    Just recently two icons have popped up on my desk and they are Network and .DS. What can I do to get rid of them? They cant just be deleted. I dont know what to do.

  • How do I get CS4 onto my new macbook?

    I have been using CS4 on my pc for quite a while now and I just switched to a mac. I dont want to upgrade at all. I have my serial number and I want to know where I can download the software that I own.