2013-05-20 62 views
2

我需要執行這個SQL代碼:的Java JDBC EXEC程序

exec ais_disp.p_lk.p_add_client 
(v_sis_id  => 1640, 
v_proc_id => 1, 
v_time_start => to_date('01032013 00:00','ddmmyyyy hh24:mi'), 
v_time_end => to_date('31032013 23:59','ddmmyyyy hh24:mi')); 
select * from ais_disp.v_lk_1; 
commit; 

,並從該查詢ResultList。

我試圖做這樣的:

CallableStatement stmt = connection.prepareCall("{call ais_disp.p_lk.p_add_client " + 
        "(1640, 
         1, 
         to_date('01032013 00:00','ddmmyyyy hh24:mi'), 
         to_date('31032013 23:59','ddmmyyyy hh24:mi'))}"); 
stmt.execute(); 
ResultSet rs2 = stmt.executeQuery("select * from ais_disp.v_lk_1"); 
System.out.println(rs2); 
while (rs2.next()){ 
    System.out.println(rs2.getString("LRP_STATUS_NAME")); 
} 
stmt.close(); 

但它返回空ResultSet。我做錯了什麼? 數據庫是Oracle數據庫。

UPDATE:

我已經加入這個字符串代碼之前stmt.executeQuery("select * from ais_disp.v_lk_1")

stmt.execute(); 

但它仍然不返回行。 也許我需要在可調用語句中以某種方式添加select語句。那麼該怎麼做呢?

+0

你的第一個'to_date()'調用指定了一個不正確的格式掩碼(在'hh24'之前缺少空格)。因爲存儲過程不返回結果集,所以你應該使用'execute()'而不是'executeQuery()' - 實際上我期望你的第一個'executeQuery()'(運行存儲過程)拋出一個異常。 –

回答

3

好像你CallableStatement從來沒有被執行,首先執行存儲過程:

ResultSet rs = stmt.executeQuery() 

你的代碼執行選擇查詢,而不是存儲過程,以及選擇語句沒有返回行。

+0

我已經更新了代碼,但它仍然沒有返回任何行 –