updating table with two images
From: Vladimir Kanovnik <vlad_at_melbpc.org.au>
Date: Wed, 22 Oct 2003 09:56:45 GMT
Message-ID: <xvslb.161208$bo1.101366_at_news-server.bigpond.net.au>
ord_content_type in varchar2,
ord_content_blob out blob
)
as
Date: Wed, 22 Oct 2003 09:56:45 GMT
Message-ID: <xvslb.161208$bo1.101366_at_news-server.bigpond.net.au>
I have table with columns id(number), photo(blob) and thumbnail(blob). I would like to insert image (using stored procedure) from file to column photo and in same time copy reduced image to column thumbnail. My code is: CREATE OR REPLACE PROCEDURE "MDEMO"."PUT_PHOTO_THUMB" (
image_file_directory in varchar2, image_file_name in varchar2, image_file_mime_type in varchar2, image_http_path in varchar2, image_http_name in varchar2, ord_procedure_path in varchar2,
ord_content_type in varchar2,
ord_content_blob out blob
)
as
localImage ordsys.ordimage; localThumb ordsys.ordimage;begin
/* * Create an empty object. */ localImage := ordsys.ordimage( ordsys.ordsource( empty_blob(), null, null, null, null, null ), null, null, null, null, null, null, null ); localThumb := ordsys.ordimage( ordsys.ordsource( empty_blob(), null, null, null, null, null ), null, null, null, null, null, null, null ); /* * Process the request based on the location of the new image. */ if length( image_file_directory ) > 0 then /*end if;
* Image is stored as a FILE in a database server directory.
* Set the local image object to reference the specified file.
*/ localImage.clearLocal(); localImage.setSource( 'FILE', image_file_directory, image_file_name ); localImage.setMimeType( image_file_mime_type ); elsif length ( image_http_path ) > 0 then /*
* Image is stored on a web server somewhere.
* Set the local image object to reference the URL.
*/ localImage.clearLocal(); localImage.setSource( 'HTTP', image_http_path, image_http_name ); else /*
* Image is being uploaded from the client to be stored in the
database.
* Set the flag to indicate the image is to be stored in the object's
* local-data BLOB.
*/ localImage.setLocal(); localImage.setMimeType( ord_content_type ); localThumb.setMimeType( ord_content_type ); /* copy reduced image from localImage to localThumb*/ localImage.processCopy('maxScale=50,50',localThumb);
/* * Update the image object in the table. If the image is to be stored in * the object's local-data BLOB, then return the LOB handle so the web * agent can store the image in the database. */ if localImage.isLocal() then update MPHOTOS i set i.IMAGE = localImage where ID = ord_procedure_path return i.IMAGE.source.localdata into ord_content_blob; update MPHOTOS i set i.THUMB = localThumb where ID = ord_procedure_path return i.THUMB.source.localdata into ord_content_blob; else update MPHOTOS i set i.IMAGE = localImage where ID = ord_procedure_path; update MPHOTOS i set i.THUMB = localThumb where ID =ord_procedure_path;
end if;
end;
/
SHOW ERRORS;
When I want to execute (using intermedia clipboard) I receive a message
"invalid LOB locator specified". What is wrong?
Thanx in advance
-- -- ,-._|\ Vladimir Kanovnik Melbourne PC UsersGroup / Oz \ Email: vlad_at_melbpc.org.au \_,--.x/ Phone: +61 3 9791 1409 v Fax: +61 3 9791 1946 Mobile: +61 412 134012 ~~ Australia ~~Received on Wed Oct 22 2003 - 11:56:45 CEST