BLUEFLAME·翼 2021-10-21 19:21 采纳率: 0%
浏览 25

Java 调用 Oracle 存储过程问题 求解答

JDK8 Oracle18C com.oracle.database.jdbc:ojdbc8:19.3.0.0(之前是用的ojdbc6,但是ojdbc6直接连自定义方法都找不到,后面换成ojdbc8)

Java代码:

try (DruidPooledConnection connection = dataSource.getConnection();
CallableStatement cs = connection.prepareCall(call)) {
// 参数填充 并 执行
cs.setString(1, projectId);
cs.setString(2, requestName);
cs.setString(3, requestType);

// 生成 数组 参数
OracleConnection unwrap = OracleUtils.unwrap(connection);
String[] strings = numbers.toArray(new String[0]);
Array d_numbers = unwrap.createOracleArray("M_API.M_TYPE", strings);
cs.setArray(4, d_numbers );


cs.registerOutParameter(5, OracleTypes.NUMBER);
cs.registerOutParameter(6, OracleTypes.VARCHAR);
cs.registerOutParameter(7, OracleTypes.VARCHAR);

cs.execute();

int requestId = cs.getInt("request_id");
String requestDate = cs.getString("request_date");
String message = cs.getString("message");

result.setRequestId(requestId);
result.setRequestDate(requestDate);
result.setMessage(message);

} catch (SQLException e) {
log.error(e.getMessage(), e)
}

自定义type的声明(m_table中id的类型是varchar2(100 char)):
M_TYPE是放在M_API包里的

TYPE M_TYPE IS
TABLE OF m_table.id%TYPE
INDEX BY BINARY_INTEGER;

存储过程的声明:

PROCEDURE CreateNSR(project_id IN VARCHAR2,
request_name IN VARCHAR2,
request_type IN VARCHAR2,
d_numbers m_api.m_type,
request_id OUT NUMBER,
request_date OUT VARCHAR2,
message OUT VARCHAR2)

目前这块生成数组传到Oracle之后执行报错,使用C#调用这个存储过程是正常的
排查这个数组传递到Oracle接受参数之后,下标是从0开始的,但是C#传过去的是1开始的。
执行代码Oracle会返回"ORA-01403: no data found"。
这块怎么改才能正常运行?
求解答!

  • 写回答

1条回答 默认 最新

  • 关注

    oracle安装路径下面有个jdbc的文件夹,从里面拷贝jar包出来运行。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月21日

悬赏问题

  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)