java 调用 存储过程 30
PROCEDUREGet_Cust_Info(Pi_CustnoINVARCHAR2,Po_Cust_InfoINOUTNOCOPYt_Cust_Info,Po_Eror...
PROCEDURE Get_Cust_Info(Pi_Custno IN VARCHAR2,
Po_Cust_Info IN OUT NOCOPY t_Cust_Info,
Po_Erorno OUT CHAR,
Po_Erortx OUT VARCHAR2);
TYPE t_Cust_Info IS RECORD(
Custno Cifs_Cfb_Cust.Custno%TYPE, --客户号
Custna Cifs_Cfb_Cust.Custcn%TYPE, --客户中文名称
Custen Cifs_Cfb_Cust.Custen%TYPE, --客户英文名称
Custtp Cifs_Cfb_Cust.Custtp%TYPE, --客户类型
Custlv Cifs_Cfb_Cust.Custlv%TYPE, --客户级别
Custst Cifs_Cfb_Cust.Custst%TYPE, --客户状态
Opendt Cifs_Cfb_Cust.Opendt%TYPE, --客户开户日期
Openbr Cifs_Cfb_Cust.Openbr%TYPE, --开户行
Openus Cifs_Cfb_Cust.Openus%TYPE, --开户柜员号
Risklv Cifs_Cfb_Cust.Risklv%TYPE --风险等级
);
第一个是存储过程 第二个是type 现在java要调用上面的存储过程,传入的参数不对,
String sql = "{CALL Pkg_Extl_Ltts.Get_Cust_Info(?,?,?,?)}";
CallableStatement callStmt = this.getSession().connection()
.prepareCall(sql);
callStmt.setString(1, custNo);
// 注册out类型的参数
callStmt.registerOutParameter(2, OracleTypes.STRUCT);
callStmt.registerOutParameter(3, OracleTypes.VARCHAR);
callStmt.registerOutParameter(4, OracleTypes.VARCHAR);
callStmt.execute();
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GET_CUST_INFO'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
异常提示为参数不正确 就是type参数那里不对 record应该对应哪个类型呢,自定义类型java应该怎么去调用 展开
Po_Cust_Info IN OUT NOCOPY t_Cust_Info,
Po_Erorno OUT CHAR,
Po_Erortx OUT VARCHAR2);
TYPE t_Cust_Info IS RECORD(
Custno Cifs_Cfb_Cust.Custno%TYPE, --客户号
Custna Cifs_Cfb_Cust.Custcn%TYPE, --客户中文名称
Custen Cifs_Cfb_Cust.Custen%TYPE, --客户英文名称
Custtp Cifs_Cfb_Cust.Custtp%TYPE, --客户类型
Custlv Cifs_Cfb_Cust.Custlv%TYPE, --客户级别
Custst Cifs_Cfb_Cust.Custst%TYPE, --客户状态
Opendt Cifs_Cfb_Cust.Opendt%TYPE, --客户开户日期
Openbr Cifs_Cfb_Cust.Openbr%TYPE, --开户行
Openus Cifs_Cfb_Cust.Openus%TYPE, --开户柜员号
Risklv Cifs_Cfb_Cust.Risklv%TYPE --风险等级
);
第一个是存储过程 第二个是type 现在java要调用上面的存储过程,传入的参数不对,
String sql = "{CALL Pkg_Extl_Ltts.Get_Cust_Info(?,?,?,?)}";
CallableStatement callStmt = this.getSession().connection()
.prepareCall(sql);
callStmt.setString(1, custNo);
// 注册out类型的参数
callStmt.registerOutParameter(2, OracleTypes.STRUCT);
callStmt.registerOutParameter(3, OracleTypes.VARCHAR);
callStmt.registerOutParameter(4, OracleTypes.VARCHAR);
callStmt.execute();
java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GET_CUST_INFO'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
异常提示为参数不正确 就是type参数那里不对 record应该对应哪个类型呢,自定义类型java应该怎么去调用 展开
1个回答
展开全部
oracle我也不太熟,我的思路是:
返回一个cursor,在java中通过移动cursor得到result,以前代码的片段:
# CallableStatement cs = conn.prepareCall("{call getAll(?,?)}");
# cs.registerOutParameter(1,oracle.jdbc.OracleTypes.NUMBER);
# cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
# cs.execute();
# //输出
# System.out.println("total="+cs.getDouble(1));
# //通过游标得到resultSet
# ResultSet rs = (ResultSet)cs.getObject(2);
# while(rs.next()){
# System.out.println("id="+rs.getString("id")+" name="+rs.getString("name"));
# }
返回一个cursor,在java中通过移动cursor得到result,以前代码的片段:
# CallableStatement cs = conn.prepareCall("{call getAll(?,?)}");
# cs.registerOutParameter(1,oracle.jdbc.OracleTypes.NUMBER);
# cs.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
# cs.execute();
# //输出
# System.out.println("total="+cs.getDouble(1));
# //通过游标得到resultSet
# ResultSet rs = (ResultSet)cs.getObject(2);
# while(rs.next()){
# System.out.println("id="+rs.getString("id")+" name="+rs.getString("name"));
# }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询