日期:2014-05-20  浏览次数:20845 次

JAVA调用有返回的存储过程怎么不行啊
存储过程:
drop   proc   h
create   proc   h  
@a   int,@b   int,@c   int   output
as
set   @c=@a+@b
go
declare   @c   int
exec   h   1,2,@c   output
print   @c
在java里面:
CallableStatement   cs   =   null;
                try   {
                        cs   =   DBConn.getConnection().prepareCall( "{call   h(?,?,?)} ");
                        cs.setInt(1,1);
                        cs.setInt(2,2);
                        cs.registerOutParameter(3,   java.sql.Types.INTEGER);
                        cs.execute();
                        int   temp=cs.getInt(3);
                        cs.close();
                        System.out.println(temp);
                }   catch   (ClassNotFoundException   ex)   {
                        ex.printStackTrace();
                }   catch   (SQLException   ex)   {
                        ex.printStackTrace();
                }
出错内容:
java.sql.SQLException:   Output   parameter   not   allowed   as   argument   list   prevents   use   of   RPC.
at   net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:993)
at   net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:478)
at   net.sourceforge.jtds.jdbc.JtdsPreparedStatement.execute(JtdsPreparedStatement.java:478)
at   procdemo.Test3.main(Test3.java:19)


------解决方案--------------------
你的存储过程写的不对