接口日志表字段设计成CLOB类型,但是当字符内容大于4000时,用JDBC执行SQL报错。针对这种情况做如下修改,后台新增存储过程,将字符串类型改成CLOB类型。
create or replace procedure P_INSERT_INTER_LOG (PLATFORM VARCHAR2,CRM_ROLE VARCHAR2,SERVICE_NAME VARCHAR2,METHOD_NAME VARCHAR2,INPUT_PARAM VARCHAR2,OUTPUT_PARAM VARCHAR2,TRADE_ID VARCHAR2,REMARK VARCHAR2)
is
<span style="color:#ff0000;">v_clob clob:=OUTPUT_PARAM;</span>
begin
insert into T_INTERFACE_LOG values(PLATFORM,CRM_ROLE,SERVICE_NAME,METHOD_NAME,INPUT_PARAM,v_clob,sysdate,TRADE_ID,REMARK);
commit;
end;
程序里由原来的直接执行SQL,修改为执行存储过程。
public static void callp_inLog(TInterfaceLog log)
{
String input_sql = "{call P_INSERT_INTER_LOG(?,?,?,?,?,?,?,?)}";
String arr[] = new String[8];
arr[0] = log.getPlatform();
arr[1] = log.getCrm_role();
arr[2] = log.getService_name();
arr[3] = log.getMethod_name();
arr[4] = log.getInput_param();
arr[5] = log.getOutput_param();
arr[6] = log.getTrade_id();
arr[7] = log.getRemark();
String val = DataConnection.executeProcedure(input_sql, arr, "");
System.out.println(val);
}