首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLException (ORA-00900)与Java到PL SQL Date

SQLException (ORA-00900)与Java到PL SQL Date
EN

Stack Overflow用户
提问于 2015-02-10 16:03:01
回答 1查看 359关注 0票数 0

我已经给出了一个带有以下参数的PL/SQL函数:

代码语言:javascript
复制
FUNCTION "insert_foo"(c_i IN VARCHAR2, c_t IN VARCHAR2,
         c_d IN VARCHAR2, c_x IN NUMBER, c_b IN NUMBER,
         c_e IN NUMBER, c_valid IN DATE) RETURN NUMBER IS

现在,我试图从Java程序调用此函数,但得到了异常:

代码语言:javascript
复制
java.sql.SQLException: ORA-00900

我确信,最后一个参数,日期,是这个异常的原因。

我是这样使用它的:

代码语言:javascript
复制
Calendar cal = new GregorianCalendar();
cal.add(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);    
// this is my parameter for the Callable Statement
new java.sql.Date(cal.getTimeInMillis());

你能帮我吗?!

致以亲切的问候和感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 20:05:03

我解决了这个问题!

不是我想的日期。我只是没有以正确的方式调用pl/sql函数。

调用PL/SQL函数,如

代码语言:javascript
复制
FUNCTION "insert_foo"(c_i IN VARCHAR2, c_t IN VARCHAR2,
     c_d IN VARCHAR2, c_x IN NUMBER, c_b IN NUMBER,
     c_e IN NUMBER, c_valid IN DATE) RETURN NUMBER IS

您必须使用查询字符串,如

代码语言:javascript
复制
"{? = call insert_foo(?,?,?,?,?,?,?)}"

首先,创建一个CallableStatement (使用java.sql.Connection9的一个实例,然后用值填充“?”,然后执行以下函数:

代码语言:javascript
复制
CallableStatement test = java.sql.Connection
        .prepareCall(
    "{? = call insert_foo(?,?,?,?,?,?,?)}");

test.registerOutParameter(1, Types.INTEGER); // <- OutParameter (!)
test.setString(2, "TEST");
test.setString(3, "TEST");
test.setString(4, "TEST");
test.setInt(5, 12);
test.setInt(6, 13);
test.setInt(7, 123);
test.setDate(8, new java.sql.Date(cal.getTimeInMillis()));

System.out.println("-+-+- RESULT -+-+-> " + test.executeUpdate());

提示:

如果在查询中写"CALL“而不是"call”

代码语言:javascript
复制
"{? = call insert_foo(?,?,?,?,?,?,?)}"

你会得到一个SQLException:

代码语言:javascript
复制
java.sql.SQLException: SQL92-Zeichenfolge in falschem Format in Position: 5. Expecting "call"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28426746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档