如题,在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存储过程的时候提示类型不匹配或类型不存在,注释中的方法全试过,还是不行~