例子中用到的表t123及存储过程test_proc的建立见博文:java
http://my.oschina.net/u/2245781/blog/646323 sql
package www.zjptcc.wxw.jdbctest.syb; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Types; public class TestSp1 { /** * @param args */ public static void main(String[] args) { // TODO 自动生成的方法存根 try { Class.forName("com.sybase.jdbc4.jdbc.SybDriver").newInstance(); String url = "jdbc:sybase:Tds:localhost:5000/testdb";// 数据库名 Connection conn = DriverManager.getConnection(url, "mymotif","wxwpxh"); /* test_proc(@id_min int, @num_t123 int output))是将表t123中的id字段中大于等于第一个参数@id_min 的数目统计好,放到第二个参数@num_t123(输出参数) */ String procedure = "{ call test_proc(?, ?)}"; CallableStatement statement = conn.prepareCall(procedure); //经过 setXXX 方法将IN参数传给@id_min,其中第一个1是参数的索引值,第二个1是传给@id_min的值 statement.setInt(1, 1); //registerOutParameter注册输出参数@num_t123,输出参数的索引值是2 //参数的索引值是根据占位符?出现的次序从左到右由1开始计,无论其是输入仍是输出参数 statement.registerOutParameter(2,Types.INTEGER); statement.execute(); //打印输出参数@num_t123的值 System.out.print(statement.getInt(2)); conn.close(); } catch (SQLException sqe) { System.out.println("Unexpected exception : " + sqe.toString() + ", sqlstate = " + sqe.getSQLState()); System.exit(1); } catch (Exception e) { System.out.println(e.getMessage()); } } }