【问题标题】:How to pass date object to PL-SQL as the first and only input parameter如何将日期对象作为第一个也是唯一的输入参数传递给 PL-SQL
【发布时间】:2020-08-02 08:36:11
【问题描述】:
  1. 首先,我将从数据库中获取一个日期值作为输入变量。日期格式将采用 (2020-08-31) 格式。

  2. 我需要将这个日期转换成如下格式的 PL-SQL 块。

    to_date('31082020','ddmmyyyy')

  3. 为了获得上述格式,我使用 java 进行了如下转换。

    // Converting the date format for the required type for PL-SQL block
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ddMMyyyy");
     String modifiedDate = simpleDateFormat.format(processingDate);
     String modifiedDateParameter = "to_date(\'"+modifiedDate+"\','ddmmyyyy')";
    
  4. 现在我将把上面的 modifiedDateParameter 作为输入参数传递给我的 PL-SQL 块。代码如下。这里的 SQL 是我将要调用的过程。

    callableStatement = conn.prepareCall(SQL); callableStatement.setDate(1,java.sql.Date.valueOf(billEndDate)); callableStatement.executeUpdate();

  5. 但是我得到了以下异常。

线程“主”java.lang.IllegalArgumentException 中的异常 在 java.sql/java.sql.Date.valueOf(Date.java:141)

请问我需要如何修改才能解决此问题?

【问题讨论】:

标签: java exception plsql date-format plsql-package


【解决方案1】:

看看java.sql.Date.valueOf的javadoc: https://docs.oracle.com/javase/7/docs/api/java/sql/Date.html#valueOf(java.lang.String)

将 JDBC 日期转义格式的字符串转换为日期值。 s - 一个字符串对象,表示格式为“yyyy-[m]m-[d]d”的日期。 mm 和 dd 的前导零也可以省略。

所以这个调用有效: java.sql.Date.valueOf("2020-2-2");

这会引发您提到的异常: java.sql.Date.valueOf("20200909");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多