Java JDBC CallableStatement調用存儲過程

    我現在遇到一個問題, java 去調用存儲過程的時候, 如果  存儲過程 代碼裏面寫的是增、刪、查、改,最終有select 語句的話,java 是可以取得結果集的
  但是,如果在proc 代碼裏寫了  DDL 語句比如 Create table drop table  後面的select 查詢結果 java 就取不到了。

JDBC 調用存儲過程:CallableStatement call = conn.prepareCall(“{call proc(?,?,?)}”);

conn = ...//獲取sql server db 的連接
CallableStatement call = conn.prepareCall("{call proc(?,?,?)}");
//這裏是設置參數,具體的是傳遞對象,總之最終效果是call.setInt..setString...
//統一用setObject設置入參
for (ProcPar p : ParameterList) {
    if (p.getIsOutput()) {
        call.registerOutParameter(p.getParName(), p.getDataType());
    } else {
        call.setObject(p.getParName(), p.getParValue());
    }
}
call.execute();
while(call.getMoreResults()){//遍歷取值
    rs = call.getResultSet();
    while(rs.next()){
        System.out.println(rs.getString(1));
    }
}

存儲過程代碼:

ALTER PROCEDURE test_xj
    @pagesize int,
    @pageindex int,
    @result varchar(200) output
AS
BEGIN

    update aaA set isBit=1,create_date=GETDATE()
    select * from Sys_FPage where Pid=901001
   --ddl 語句如果釋放註釋就取不到結果集了
    --create table #a(id int)
    --drop table #a

    select top 10 * into #b from Sys_FPage

    select * from #b
    set @result='OK'
END
GO
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章