列的插入值太大:“oracle.sql.STRUCT@c85ad79”

时间:2017-11-21 14:43:16

标签: java oracle jdbc plsql

JSON请求:

{
"telephoneAddress" : {
    "phoneType" : "RESADD",
    "countryCode" : "87654321",
    "areaCode" : "0111",
    "telephoneNumber" : "8097739267",
    "extensionNum" : "9111",
    "formatCode" : "as",
    "unlistTelephoneNumInd" : "y"
}
} 

来自java代码的过程调用:

 rspParmMap = this.applicationsProcPut.withProcedureName("MS_PUT_CTC_DETAILS")
            .declareParameters(new SqlParameter("V_MS_CTC_DTL_OBJ",
                oracle.jdbc.OracleTypes.STRUCT)).execute(reqParamMap);

任何人都可以告诉我为什么会收到此错误以及oracle.jdbc.OracleTypes.STRUCT的用途是什么?

如果您想了解有关此错误的更多信息,请与我们联系。

从上到下插入JSON数据序列的列大小:

VARCHAR2(6 BYTE)
VARCHAR2(8 BYTE)
VARCHAR2(8 BYTE)
VARCHAR2(20 BYTE)
VARCHAR2(20 BYTE)
VARCHAR2(8 BYTE)
VARCHAR2(1 BYTE)

java中的Sqlobj

    private long appReferNum;

    private int ipIdNum;
    private String seqNo;
    private String postalTableInd;
    private String emailTableInd;
    private String teleTableInd;
    private TelephoneAddObj telephoneAddObj;
    private PostalAddObj postalAddObj;
    private EmailAddObj emailAddObj;

        //get,set
    @Override
        public String getSQLTypeName() throws SQLException {
            return "MS_CTC_DTL_OBJ"; // sqltype name in oracle
        }

sql type

create or replace 
            TYPE "MS_CTC_DTL_OBJ" 
                AS 
        OBJECT(
    v_app_refer_num      NUMBER,
    v_ip_id_num          NUMBER,
    v_seqNo             VARCHAR2(4 CHAR),
    v_postalTableInd    VARCHAR2(4 CHAR),
    v_emailTableInd     VARCHAR2(4 CHAR),
    v_teleTableInd     VARCHAR2(4 CHAR),

    v_TELE_ADD_DEL IP_TELE_ADDR_OBJ,
    v_POST_ADD_DEL IP_POSTAL_ADD_OBJ,
    v_EMAIL_ADD_DEL IP_EMAIL_ADD_OBJ );

程序

create or replace 
PROCEDURE 
MS_PUT_CTC_DETAILS(
  V_MS_CTC_DTL_OBJ IN MS_CTC_DTL_OBJ,
  v_status OUT varchar2
  --,v_postal_status OUT varchar2
 -- ,v_email_status OUT varchar2
) AS .

。 。 。 。只是更新事情

1 个答案:

答案 0 :(得分:0)

Structs和Array是来自spring doc

的高级数据类型
  

Oracle数据库和用于存储过程的PL / SQL语言   在Oracle中内置了对一些高级数据类型的支持。这些   使用标准JDBC API无法轻松访问数据类型,因此可以使用   必须依赖Oracle的JDBC扩展,如ARRAY和STRUCT   以及用于访问它们的API。

请检查 STRUCT / 列的长度。也要注意任何可能需要超过1个长度的特殊字符。