JAVA调用MySQL存储过程跟SQL2000一样吗?高手们帮帮忙吧.跪求了,急用。
所属分类:Java J2SE / 基础类
----------------------------------------------------------------------
create PROCEDURE maxweeks
(
out num int
)
BEGIN
select count(*) as times into num from tb_down_client_app_log GROUP BY WEEK(clickdate) order by times DESC LIMIT 1;
END;
这是我的存储过程.与sql2000的好象不一样.实在是做不下去了.
----------------------------------------------------------------------
出了什么问题
--------------------------------------------------------
你写的是存储过程,
JAVA如何调用与数据库是无关的,一个样
--------------------------------------------------------
CallableStatement cstm = cn.prepareCall("{call maxweeks(?)}");
cstm.registerOutParameter(1,java.sql.Types.INTEGER);
int x = cstm.getInt(1);
这样的代码有错误!
java.sql.SQLException: No output parameters returned by procedure.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.CallableStatement.getOutputParameters(CallableStatement.java:1430)
at com.mysql.jdbc.CallableStatement.getInt(CallableStatement.java:1247)
at com.cj.Test.main(Test.java:34)
真的不知道错误出在那里了
--------------------------------------------------------
存储过程中的输出参数的数据类型,是根据申明的数据类型来的.按道理来说java.sql.Types.INTEGER
应该是整型.但是为什么最后还是接受不到.
大侠们,写一个小例子,照顾一下小弟吧
--------------------------------------------------------
没有返回值
就不要定义 outParameter
--------------------------------------------------------
create PROCEDURE maxweeks
(
out num int
)
这里不是返回值吗
我可以在MySQL打印
代码是这样的
call maxweeks(@i);
select @i;
这个应该是返回值吧?
--------------------------------------------------------
看错了 不好意思
--------------------------------------------------------
interpb(曾曾胡,深怕情多累美人!!!)
------------------------------
那为什么,还是不能调用呢?
cstm.registerOutParameter(1,java.sql.Types.INTEGER); //这里的数据类型是数据中的
int x = cstm.getInt(1); //这里也是根据数据库中得到的
但是为什么会报错
java.sql.SQLException: No output parameters returned by procedure.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.CallableStatement.getOutputParameters(CallableStatement.java:1430)
at com.mysql.jdbc.CallableStatement.getInt(CallableStatement.java:1247)
at com.cj.Test.main(Test.java:34)
-------------------------------------------------------
cstm.execute();
--------------------------------------------------------
--转自