【问题标题】:Call stored MySQL function调用存储的 MySQL 函数
【发布时间】:2013-06-07 18:49:08
【问题描述】:

我在我的数据库中创建了一个存储函数verifierQteDemandee,它有一个整数参数numBonIn,它返回一个布尔值。

我想在我的java程序中执行这个函数,我搜索了一下,我能找到的只是执行一个存储过程,但是我假设执行一个存储函数和执行一个存储过程是一样的,这是我试过的代码:

CallableStatement cStmt = con.prepareCall("{call verifierQteDemandee(?)}");
            cStmt.setInt("numBonIn", 42);
            boolean hadResults = cStmt.execute();
            if (hadResults) {
                ResultSet rs = cStmt.getResultSet();
            }
            Boolean outputValue = cStmt.getBoolean(outputValue);;

con 变量是 Connection 的实例。

您可以在我的代码中注意到,我不知道如何从该行中的存储函数获取返回值:int outputValue = cStmt.getInt("");

如果有人知道如何获取程序的返回值,我将不胜感激。

【问题讨论】:

    标签: java mysql stored-functions


    【解决方案1】:

    试试这个:

    CallableStatement cStmt = con.prepareCall("{? = call verifierQteDemandee(?)}");
    cStmt.registerOutParameter(1,java.sql.Types.BOOLEAN);
    cStmt.setInt(2, 42);
    cStmt.execute();
    Boolean outputValue = cStmt.getBoolean(1);
    

    Ça devrais fonctionner...!

    【讨论】:

    • 谢谢,谢谢 :)
    【解决方案2】:

    你可以试试:

    CallableStatement cstmt = con.prepareCall("{call verifierQteDemandee(?)}");
    cstmt.registerOutParameter(1,Type.Boolean);
    cstmt.setInt("numBonIn", 42);
    cstmt.execute();
    bool outputValue = cstmt.getBoolean(1);
    

    作为旁注,我不希望从 sql 函数中获得结果集!我希望一个标量值作为我的 sql 函数的输出

    函数和存储过程的完整对比请参考Function vs. Stored Procedure in SQL Server

    【讨论】:

      猜你喜欢
      • 2017-04-23
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2011-05-02
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多