我現在遇到一個問題, 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