调用存储的 MySQL 函数
Posted
技术标签:
【中文标题】调用存储的 MySQL 函数【英文标题】:Call stored MySQL function 【发布时间】: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("");
。
如果有人知道如何获取程序的返回值,我将不胜感激。
【问题讨论】:
【参考方案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
【讨论】:
以上是关于调用存储的 MySQL 函数的主要内容,如果未能解决你的问题,请参考以下文章