Error While loading a image from database

Purpose
Error While loading the Image from the database
ORA-06502: PL/SQL : numeric or value error:Character string buffer too small
ORA-06512: at "Sys.HTP" ,line 1480
Requirement:
I am developing the web pages using PSP(Pl/sql Serverpages) . I have a requirement to show a image in the webpage. I got the following procedures from the oracle website.
I have created the following table to store the images
create table DEMO
ID INTEGER not null,
THEBLOB BLOB
And I also uploaded the Images. Now I am try to get a image from the table using the following procedure .But I am getting the error message line 25( htp.prn( utl_raw.cast_to_varchar2( l_raw ) );) .at it throws the following error messages
ORA-06502: PL/SQL : numeric or value error:Character string buffer too small
ORA-06512: at "Sys.HTP" ,line 1480
Procedure that I used to get the image
create or replace package body image_get
as
procedure gif( p_id in demo.id%type )
is
l_lob blob;
l_amt number default 30;
l_off number default 1;
l_raw raw(4096);
begin
select theBlob into l_lob
from demo
where id = p_id;
-- make sure to change this for your type!
owa_util.mime_header( 'image/gif' );
begin
loop
dbms_lob.read( l_lob, l_amt, l_off, l_raw );
-- it is vital to use htp.PRN to avoid
-- spurious line feeds getting added to your
-- document
htp.prn( utl_raw.cast_to_varchar2( l_raw ) );
l_off := l_off+l_amt;
l_amt := 4096;
end loop;
exception
when no_data_found then
NULL;
end;
end;
end;
What I have to do to correct this problem. This demo procedure and table that I am downloaded from oracle. Some where I made a mistake. any help??
Thanks,
Nats
Advertisement
Reply

Hi Satish,
I have set the raw value as 3600 but still its gives the same error only. When I debug the procedure its throwing the error stack in
SYS.htp.prn procedure of the following line of code
if (rows_in < pack_after) then
while ((len - loc) >= HTBUF_LEN)
loop
rows_in := rows_in + 1;
htbuf(rows_in) := substr(cbuf, loc + 1, HTBUF_LEN);
loc := loc + HTBUF_LEN;
end loop;
if (loc < len)
then
rows_in := rows_in + 1;
htbuf(rows_in) := substr(cbuf, loc + 1);
end if;
return;
end if;
Its a system procedure. I don't no how to proceed .. I am really stucked on this....is their any other method to take picture from the database and displayed in the web page.....???? any idea..../suggesstion??
Thanks for your help!!!.