调用存储的MySQL函数

时间:2013-06-07 18:49:09

标签: java mysql stored-functions

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

我想在我的java程序中执行这个函数,我用google搜索它,我所能找到的就是执行一个存储过程,但是我假设执行存储函数与执行存储过程相同,这是我试过的代码:

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("");

如果有人知道如何获得返回值的程序,我会很感激。

2 个答案:

答案 0 :(得分:8)

试试这个:

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

çadraraisfonctionner ...!

答案 1 :(得分: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以获取功能和存储过程之间的完整比较