我试图开发一种将读取表的BLOB字段或写入将被用作模板到另一个程序,但RTF文档的程序时,程序会启动这个选择statemente ,我遇到了一个ORA-06502错误。错误ORA-06502的BLOB检索
此错误,阅读文档后,被田野之间的不兼容性(数字或值错误字符串)
造成的,但我已经在互联网上随处可见这个例子,我跑出来的有什么想法正在造成它。
我的程序的源代码如下:
PROCEDURE p_transfer_db_client(pcPath IN VARCHAR2,
pnSequence IN NUMBER) IS
v_src_blob BLOB;
v_file UTL_FILE.FILE_TYPE;
v_offset INTEGER := 1;
v_amount BINARY_INTEGER := 32766;
v_binary_buffer RAW(32767);
BEGIN
SELECT model
INTO v_src_blob
FROM models
wHERE id = pnSequence;
v_file := UTL_FILE.FOPEN(pcPath, 'model.rtf', 'wb', v_amount);
LOOP
BEGIN
DBMS_LOB.READ(v_src_blob, v_amount, v_offset, v_binary_buffer);
UTL_FILE.PUT_RAW(v_file, v_binary_buffer);
v_offset := v_offset + v_amount;
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
UTL_FILE.FFLUSH(v_file);
UTL_FILE.FCLOSE(v_file);
END p_transfer_db_client;
你能后的表的定义'models':
,如果你注释掉所有变量声明和下面的所有语句,即你仍然得到错误?特别是,你的'id'列是VARCHAR2吗? –
创建表款 ( inst_num_instituicao NUMBER(2)不为空, ID号(3)不为空, 模型BLOB NOT NULL ) – lagranzotto
的'ORA-06502'意味着你正在尝试设置变量值比其最大值(例如,将VARCHAR2(2)设置为'XXX')。哪一行确切地触发了错误?在SELECT语句 –