我必須從jdbc接口調用Oracle存儲過程。過程需要的記錄類型參數,其包括VARCHAR(2)字段:從java到plsql的單字符字符串varchar2(1)導致'字符串緩衝區太小'
TYPE cust_account_rec_type IS RECORD (
... , status VARCHAR2(1), ...);
我的JDBC查詢字符串聲明記錄類型變量並指定值的狀態字段,其中右側是查詢參數。然後,調用程序。
p_cust_account_rec.status := :IN_insert_status;
someprocedure(p_cust_account_rec);
的Java查詢調用設置爲值IN_insert_status參數:
callableStatement.setString("IN_insert_status", "I");
// callableStatement is type of java.sql.CallableStatement
callableStatement.execute()之後,我得到
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
信息點與此單個字符的varchar排隊變量。但是,當我在sql查詢字符串硬編碼值爲:
p_cust_account_rec.status := 'I';
它的工作原理。
在java中傳遞單個字符字符串時出現了什麼問題,或者我錯過了什麼?
我禁止對數據庫進行任何更改。這是外部數據庫,從這個角度來看,它對我來說是「只讀」的。 – Invader92
看看這裏,可能是相同的問題,http://stackoverflow.com/questions/17598969/character-string-buffer-too-small-error-in-oracle-stored-procedure –