0

I have the following PLSQL code:

declare 
v_exec_obj_strng    varchar2(4000); 
p_map_name varchar2(40) := 'TEST'; 
p_key      number  := 4; 
p_checksum  varchar2(40) := '111111111111111'; 
p_value     blob := 11111111111111111111; 

begin 
v_exec_obj_strng := 'insert into my_table(name, key, chksum, value) values (''' || p_map_name || ''', ' || p_key || ', ''' || p_checksum || ''', ''' || p_value || ''')';
dbms_output.put_line(v_exec_obj_strng); 
end;
/

and I am getting this error: PLS-00320: the declaration of the type of this expression is incomplete or malformed

thoughts?

samg
  • 311
  • 1
  • 8
  • 21

1 Answers1

3

You can't just assign an integer value to a blob like that.

You can assign a RAW value to a BLOB using TO_BLOB:

p_value     blob := to_blob(UTL_RAW.CAST_FROM_NUMBER(11111111111111111111)); 

Or look at the DBMS_LOB package for more examples of how to assign values to BLOBs. Especially look at CONVERTTOBLOB and LOADBLOBFROMFILE.

Edit: to clarify, DBMS_LOB.CONVERTTOBLOB only works for character data, and it's overly complicated. Please just give an example of what you're actually trying to do.

kfinity
  • 8,581
  • 1
  • 13
  • 20