CallableStatement 无法识别 OUT 参数

发布于 2024-12-01 12:30:55 字数 615 浏览 3 评论 0原文

我有一个 MySql 中的存储过程示例,我想用 JDBC 调用它。问题是我收到以下错误:

java.sql.SQLException: Parameter number 1 is not an OUT parameter

存储过程的定义是:

delimiter \\
create procedure get_average (
  out a decimal(8,2)
)
begin
  select avg(grade) into a from students;
end \\

如您所见,我有一个学生表,我计算平均值。当我在 MySql 中测试时它工作正常。

java代码:

CallableStatement cstmt = con.prepareCall("call get_average(?)");
cstmt.registerOutParameter(1, java.sql.Types.DOUBLE);
rs = cstmt.executeQuery();
double average = cstmt.getDouble(1);

其中con是一个打开的连接。我做错了什么?

I have an example of a stored procedure in MySql and I want to call it with JDBC. The problem is that I get the following error:

java.sql.SQLException: Parameter number 1 is not an OUT parameter

The stored procedure's definition is :

delimiter \\
create procedure get_average (
  out a decimal(8,2)
)
begin
  select avg(grade) into a from students;
end \\

As you can see I have a students table and I calculate the average. It works fine when I test in in MySql.

The java code :

CallableStatement cstmt = con.prepareCall("call get_average(?)");
cstmt.registerOutParameter(1, java.sql.Types.DOUBLE);
rs = cstmt.executeQuery();
double average = cstmt.getDouble(1);

where con is an opened Connection. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瞳孔里扚悲伤 2024-12-08 12:30:55

尝试:

CallableStatement cstmt = con.prepareCall("{call get_average(?)}");

Try:

CallableStatement cstmt = con.prepareCall("{call get_average(?)}");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文