如题,在JAVA中如何调用?JAVA调用代码如下(一小部分):
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ROWID, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.JAVA_OBJECT, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.CURSOR, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY, "MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.REF );
cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, Types.ARRAY, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.CURSOR, "SmsService.msg_array" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.CURSOR );// 执行存储过程
cstmt.execute();
// cstmt.executeUpdate();
Oracle代码如下: --留言业务
procedure LiuYan( srcaddr varchar2, --源号码
srcaddrtype varchar2, --源号码类型,0真实号码 1伪号码
dstaddr varchar2, --目的号码
msg varchar2, --消息内容
topid varchar2, --栏目代码
srvcode varchar2, --业务代码
cmd varchar2, --命令码
linkid varchar2, --mo的linkid
masterid varchar2,
zoneid varchar2,
param1 varchar2, --备用参数,扣费类型 0全部免费 1全部收费 2红名单免费
param2 varchar2, --备用参数
ret out integer, --成功失败 0 成功 1 失败
retmsgc out integer, --返回消息数目
retmsgs out SmsService.msg_array --返回消息
); Type sm_msg is Record
(
SendMsg varchar2(300):='',
SendTo varchar2(50):='',
SendToCodeType varchar2(2):='0', --接收号码类型,0 真实号码 1 伪码
SendFrom varchar2(20):='',
pid varchar2(4) :=sm_normal_pid,
Dsc varchar2(4):='15',--sm_unicode_dcs,
service varchar2(11):='',
pri varchar2(4):=sm_normal_pri,
report varchar2(4):=sm_requir_report,
udhi varchar2(4):=sm_default_udhi,
Fee_UserType varchar2(4):=sm_default_userfeetype,
Fee_termial_id varchar2(50):='',
Fee_termial_Type varchar2(2):='0', --扣费号码类型,0 真实号码 1 伪码
Msg_src varchar2(11):='',
FeeType varchar2(4):=sm_default_feetype,
FeeCode varchar2(7):='0',
MoFlag varchar2(1):='0',
GivenCode varchar2(7):='',
AtTime varchar2(17):='', --计划下发时间
ValidTime varchar2(17):='', --消息有效时间
SmType varchar2(4):= '3', --//新增,消息类型
FixedCode varchar2(7):= '100000', -- //新增,封项资费
Linkid varchar2(61):= '', --//新增,MO的LINKID
Transactionid varchar2(20) --可用于特殊标识MT消息话单,话单中保存
); type msg_array is table of sm_msg index by BINARY_INTEGER;
现在的问题是在JAVA中调用LiuYan存储过程的时候提示类型不匹配或类型不存在,注释中的方法全试过,还是不行~
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ROWID, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.JAVA_OBJECT, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.CURSOR, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY, "MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.REF );
cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, Types.ARRAY, "SMSSERVICE.MSG_ARRAY" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.ARRAY );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.CURSOR, "SmsService.msg_array" );
// cstmt.registerOutParameter( 15, oracle.jdbc.OracleTypes.CURSOR );// 执行存储过程
cstmt.execute();
// cstmt.executeUpdate();
Oracle代码如下: --留言业务
procedure LiuYan( srcaddr varchar2, --源号码
srcaddrtype varchar2, --源号码类型,0真实号码 1伪号码
dstaddr varchar2, --目的号码
msg varchar2, --消息内容
topid varchar2, --栏目代码
srvcode varchar2, --业务代码
cmd varchar2, --命令码
linkid varchar2, --mo的linkid
masterid varchar2,
zoneid varchar2,
param1 varchar2, --备用参数,扣费类型 0全部免费 1全部收费 2红名单免费
param2 varchar2, --备用参数
ret out integer, --成功失败 0 成功 1 失败
retmsgc out integer, --返回消息数目
retmsgs out SmsService.msg_array --返回消息
); Type sm_msg is Record
(
SendMsg varchar2(300):='',
SendTo varchar2(50):='',
SendToCodeType varchar2(2):='0', --接收号码类型,0 真实号码 1 伪码
SendFrom varchar2(20):='',
pid varchar2(4) :=sm_normal_pid,
Dsc varchar2(4):='15',--sm_unicode_dcs,
service varchar2(11):='',
pri varchar2(4):=sm_normal_pri,
report varchar2(4):=sm_requir_report,
udhi varchar2(4):=sm_default_udhi,
Fee_UserType varchar2(4):=sm_default_userfeetype,
Fee_termial_id varchar2(50):='',
Fee_termial_Type varchar2(2):='0', --扣费号码类型,0 真实号码 1 伪码
Msg_src varchar2(11):='',
FeeType varchar2(4):=sm_default_feetype,
FeeCode varchar2(7):='0',
MoFlag varchar2(1):='0',
GivenCode varchar2(7):='',
AtTime varchar2(17):='', --计划下发时间
ValidTime varchar2(17):='', --消息有效时间
SmType varchar2(4):= '3', --//新增,消息类型
FixedCode varchar2(7):= '100000', -- //新增,封项资费
Linkid varchar2(61):= '', --//新增,MO的LINKID
Transactionid varchar2(20) --可用于特殊标识MT消息话单,话单中保存
); type msg_array is table of sm_msg index by BINARY_INTEGER;
现在的问题是在JAVA中调用LiuYan存储过程的时候提示类型不匹配或类型不存在,注释中的方法全试过,还是不行~
好像不行~我试了varchar和rowid都不行~