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?
thanksset 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,
NirmalGeoAnd 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:12Thanks, 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,
JaikanthI 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);
} -
제품 : 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.
JeffHi 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 -
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; -
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 helpSo, 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 appreciatedCorruption? 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
nullHi, 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!
Stevehttp://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.