Проблемы с использованием BLOB с PLSQL - PullRequest
0 голосов
/ 04 октября 2019

У меня есть следующий код PLSQL:

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;
/

, и я получаю эту ошибку: PLS-00320: the declaration of the type of this expression is incomplete or malformed

мысли?

1 Ответ

3 голосов
/ 04 октября 2019

Вы не можете просто присвоить целочисленное значение блобу подобным образом.

Вы можете назначить значение RAW для BLOB, используя TO_BLOB:

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

Или посмотрите на пакет DBMS_LOB для получения дополнительных примеров того, как присваивать значения BLOB. Особенно обратите внимание на CONVERTTOBLOB и LOADBLOBFROMFILE.

Правка: чтобы уточнить, DBMS_LOB.CONVERTTOBLOB работает только для символьных данных, и это слишком сложно. Пожалуйста, просто приведите пример того, что вы на самом деле пытаетесь сделать.

...