我試圖開發一種將讀取表的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語句 –