我正在尝试从我的Java程序中调用Oracle存储过程.我正在使用JDBC和Spring的StoredProcedure.一些参数是用户定义的类型,我需要知道如何传递它们.特别是我应该在参数映射中指定哪种类型(即java.sql.Types.*中的哪一个)...
我正在尝试从我的Java程序中调用Oracle存储过程.我正在使用JDBC和Spring的StoredProcedure.一些参数是用户定义的类型,我需要知道如何传递它们.
特别是我应该在参数映射中指定哪种类型(即java.sql.Types.*中的哪一个)?我应该使用什么Java类型?问题类型定义如下:
type MyDoubles as varray(50000) of double precision
type MyStrings as varray(50000) of varchar2(2000)
解决方法:
Google中的第一个命中似乎展示了如何绑定VARRAY:http://www.devx.com/tips/Tip/22034类型的参数.本文档中的示例使用预准备语句,但对于存储过程,它应该工作相同.
这是一个显示基本概念的摘录:
String arrayElements[] = { "Test3", "Test4" };
PreparedStatement ps =
conn.prepareStatement ("insert into sample_varray_table values (?)");
ArrayDescriptor desc = ArrayDescriptor.createDescriptor("STRING_VARRAY", conn);
ARRAY newArray = new ARRAY(desc, conn, arrayElements);
((OraclePreparedStatement)ps).setARRAY (1, newArray);
ps.execute ();
这里要澄清一些FQDN:
> oracle.sql.ArrayDescriptor
> oracle.sql.ARRAY
> oracle.jdbc.OraclePreparedStatement
本文标题为:java – 如何使用JDBC / Spring调用Oracle存储过程,其中一些参数类型是用户定义的?
基础教程推荐
- SpringMVC请求流程源码解析 2023-03-15
- Spring Cloud详解实现声明式微服务调用OpenFeign方法 2023-03-06
- SpringBoot事务不回滚的解决方案 2023-05-31
- Java实现文件上传和下载的方法详解 2023-05-24
- jsp获取url路径的方法分析 2023-08-02
- Java如何计算两个时间段内的工作日天数 2023-02-10
- java Date和SimpleDateFormat时间类详解 2023-05-07
- Spring的@Autowired加到接口上但获取的是实现类的问题 2023-06-05
- AQS同步组件Semaphore信号量案例剖析 2023-04-06
- Java中的Comparable和Comparator接口 2023-05-13
