JDBC中調用sybase存儲過程

例子中用到的表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());
        }
    }
 
}
相關文章
相關標籤/搜索