【问题标题】:How to pass null value in stored procedure from Java?如何从 Java 传递存储过程中的空值?
【发布时间】:2016-07-27 12:04:00
【问题描述】:

我想在我的项目中将数据插入/更新到数据库。我在mysql中创建了一个存储过程。我需要从我的 java 代码中发送一些输入参数。有时这些参数的值可以为空(当用户没有为该字段发送值时)。但我无法将该空值从我的 java 代码传递到存储过程。 我的代码是:-

    StoredProcedureQuery query = manager.createStoredProcedureQuery("updateProfile");
    query.registerStoredProcedureParameter("empName", String.class, ParameterMode.IN);
    query.registerStoredProcedureParameter("fatherName", String.class, ParameterMode.IN);
    query.setParameter("empId", model.getEmpName());
    query.setParameter("fatherName", model.getfatherName());
    query.execute();

现在,我只从用户那里得到 empName。所以当我执行它时,我得到了错误。

Caused by: java.sql.SQLException: No value specified for parameter 2
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:695)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:663)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:653)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:638)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:606)
at com.mysql.cj.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2166)
at com.mysql.cj.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2146)
at com.mysql.cj.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2083)
at com.mysql.cj.jdbc.PreparedStatement.execute(PreparedStatement.java:1120)
at com.mysql.cj.jdbc.CallableStatement.execute(CallableStatement.java:790)
at org.hibernate.result.internal.OutputsImpl.<init>(OutputsImpl.java:51)

我有 20 多个字段可供用户发送,并且都是可选的。所以我不想添加一个 if 条件来检查我的 java 代码中的值是否为空。所以我想知道是否有办法将空值从java代码传递给存储过程。

【问题讨论】:

  • 您可能想提供更多详细信息,如果可能的话,提供一些代码和/或示例。
  • 这个问题很模糊......请提供您希望实现的目标、失败的地方以及遇到的错误(如果有的话)。
  • 您以与普通值相同的方式传递它。

标签: java mysql stored-procedures


【解决方案1】:

检查LinkMySQL 中的NULL 值和

this 执行存储过程

同时为存储过程中的参数分配一个默认值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多