【发布时间】:2014-08-05 08:58:44
【问题描述】:
我正在从 Java 中调用 plsql package procedure。这个过程有一个带有timestamp 的类型参数。当我将时间戳参数直接设置为过程时,我可以指定 Calendar object 来声明要使用的时区 e。 g.
Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
statement.setTimestamp(1, new Timestamp(calendar.getTimeInMillis()), calendar);
有没有办法在使用oracle.sql.ARRAY 或oracle.sql.STRUCT 时声明时区?
使用的类型声明如下:
CREATE OR REPLACE TYPE "TY_EVENT_OBJECT"
AS
OBJECT
(
timestamp_event date,
state number(15),
parameter_name varchar2(248),
value number(15)
);
CREATE OR REPLACE TYPE "TY_EVENTS"
AS
TABLE OF TY_EVENT_OBJECT;
TY_EVENTS 类型是我必须使用的 plsql 过程的一个参数。
【问题讨论】:
-
你的数组是什么 DB 数据类型,
DATE/TIMESTAMP的表或变量数组?为什么不能以相同的方式填充匹配 Java 集合的每个元素? -
@AlexPoole 它不是时间戳的集合,它是一种对象类型。你的第二个问题我没看懂,我们使用的plsql api需要调用这个plsql api。
-
那么您是传递这些对象的数组还是单个对象?显示过程规范和调用它的 Java 代码可能会让事情变得更清楚(无论如何对我来说!)