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 .
。 。 。 。只是更新事情
答案 0 :(得分:0)
Structs和Array是来自spring doc。
的高级数据类型Oracle数据库和用于存储过程的PL / SQL语言 在Oracle中内置了对一些高级数据类型的支持。这些 使用标准JDBC API无法轻松访问数据类型,因此可以使用 必须依赖Oracle的JDBC扩展,如ARRAY和STRUCT 以及用于访问它们的API。
请检查 STRUCT / 表列的长度。也要注意任何可能需要超过1个长度的特殊字符。