Re: updating table with two images
From: Daniel Morgan <damorgan_at_x.washington.edu>
Date: Wed, 22 Oct 2003 07:02:43 -0700
Message-ID: <1066831377.574611_at_yasure>
Vladimir Kanovnik wrote:
Go to google and find those postings. One thing I think is missing from what you wrote is:
dbms_lob.getlength(src_file);
Date: Wed, 22 Oct 2003 07:02:43 -0700
Message-ID: <1066831377.574611_at_yasure>
I have several times in the last year posted complete code for doing this to these usenet groups.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 /* * 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); end if; /* * 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
Go to google and find those postings. One thing I think is missing from what you wrote is:
dbms_lob.getlength(src_file);
-- Daniel Morgan http://www.outreach.washington.edu/ext/certificates/oad/oad_crs.asp http://www.outreach.washington.edu/ext/certificates/aoa/aoa_crs.asp damorgan_at_x.washington.edu (replace 'x' with a 'u' to reply)Received on Wed Oct 22 2003 - 16:02:43 CEST