3

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

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

4

2 回答 2

10

试试这个 :

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...!

于 2013-06-07T18:57:04.043 回答
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 函数的输出

函数与存储过程的完整对比请参考SQL Server中的函数与存储过程

于 2013-06-07T19:01:32.480 回答