Java執行Oracle儲存過程並接收返回值
Java執行Oracle儲存過程並接收多個返回值(集合/數值)
Java程式碼:
package com.pure.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DBHelper { public Connection getConnection(){ Connection conn=null; try{ //Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");//SqlServer //conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test", "sa", "123"); Class.forName("oracle.jdbc.driver.OracleDriver"); conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:test","root","123"); }catch(Exception e){ e.printStackTrace(); } return conn; } public void close(ResultSet rs,PreparedStatement ps,Connection conn){ try{ if(rs!=null){ rs.close(); } if(ps!=null){ ps.close(); } if(conn!=null){ conn.close(); } }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] args) { DBHelper db=new DBHelper(); System.out.println(db.getConnection()); } }
oracle儲存過程:package test; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import oracle.jdbc.OracleTypes; import com.util.DBHelper; public class Test { /** * jar執行Test類 -- cmd中執行test.jar * java -jar test.jar 14 * @param args */ public static void main(String[] args) { //System.out.println("數量="+testCall(parseInt(args[0]))); //jar執行 System.out.println("數量="+testCall(14)); } public static int testCall(int param){ DBHelper db=new DBHelper(); Connection conn= db.getConnection(); int count = 0; try{ CallableStatement call=conn.prepareCall("{call sp_test_1(?,?,?)}");//執行sp_test_1儲存過程(注:儲存過程接收引數和輸出引數Java都有打?問號) call.setInt(1, param);//設定引數 call.registerOutParameter(2, OracleTypes.INTEGER);//接收返回值 call.registerOutParameter(3,OracleTypes.CURSOR);//接收返回值 call.execute();//執行 count=call.getInt(2); //拿取儲存過程返回值 List<Map> list=new ArrayList<Map>(); //ResultSet rs=call.getResultSet(); ResultSet rs=(ResultSet)call.getObject(3);//拿取儲存過程返回的集合 while(rs.next()){ Map map=new HashMap(); map.put("id", rs.getInt("ID")); map.put("user_name", rs.getString("USER_NAME")); map.put("login_name", rs.getInt("LOGIN_NAME")); list.add(map); } System.out.println("listSize="+list.size()); }catch(Exception e){ e.printStackTrace(); }finally{ } return count; } public static int parseInt(Object obj){ try{ return Integer.parseInt(obj.toString()); }catch(Exception e){ return 0; } } }
/* * oracle儲存過程測試 */ CREATE OR REPLACE PROCEDURE sp_test_1( param1 in int, --輸入引數 out_int out int, --返回值int out_list out SYS_REFCURSOR --返回集合 ) is val_1 int; --全域性變數 begin select count(1) into val_1 from pd_system_user where id = param1; out_int := val_1; --設定結果集 open out_list for select * from pd_system_user where id <= param1; --dbms_output.put_line(out_return); --列印 end sp_test_1; -- 演示儲存過程 /* declare --宣告變數 param1 varchar2(100); val_1 int; begin param1 := 14; --變數賦值 --select val_1 := count(1) from pd_system_user where id = param1; --不行 select count(1) into val_1 from pd_system_user where id = param1; --val_1 := param1; dbms_output.put_line(val_1);--列印語句 end; */
執行結果:
相關推薦
Java執行Oracle儲存過程並接收返回值
Java執行Oracle儲存過程並接收多個返回值(集合/數值) Java程式碼: package com.pure.util; import java.sql.Connection; import java.sql.DriverManager; import java.s
Java呼叫Oracle儲存過程(無返回值)
無返回值: 1:建立儲存過程 此儲存過程向表中插入一條資料 create or replace procedure demo_procedure(id varchar2,name varchar2,age varchar2,sex varchar2,address va
Yii2.0呼叫sql server儲存過程並獲取返回值
1、首先展示建立sql server儲存過程的語句,建立一個簡單的儲存過程,測試用。 1 SET ANSI_NULLS ON 2 GO 3 SET QUOTED_IDENTIFIER ON 4 GO 5 6 CREATE PROCEDURE [dbo].[register_info]
Java 執行資料庫儲存過程,並帶返回值
前提是載入資源DataSource private JdbcTemplate jdbcTemplate; Java 呼叫儲存過程: @Override public String oneUniscInfoHisToDm(final Str
C#呼叫Oracle儲存過程並返回結果集
1.建立一個儲存過程: createorreplaceprocedure GET_PERSON ( RC1 outsys_refcursor, RC2 outsys_refcursor ) is begin open RC1 for select * from PERSO
pl/sql 建立並執行oralce儲存過程,並返回結果集
因為以前一直用sql server多,現在一下子用oracle ,工具什麼都不熟,侷限於sql server的思想 網上搜,和問朋友,跟我講了一大堆,什麼loop 啊,decalre啊,package啊,什麼命令視窗啊,什麼 sql plus啊,什麼不支援pl/sql啊.
通過shell指令碼呼叫oracle儲存過程並加入定時任務
例項 檔名:add_tab_partitions.sh #!/bin/sh username='waep' password='czty_waep' sqlplus -S ${username}/
用動態sql執行oracle儲存過程
1、呼叫procedure: v_sql := 'Begin pkg_name.procedure_name(:in_v1, :in_v2, :out_v1, :out_v2); End;' ; EXECUTE IMMEDI
callable介面配合ExecutorService實現多執行緒處理資料,並接收返回值(2018-08-23)
/** * @author chenzhen * Created by chenzhen on 2018/8/22. */ @Data public class QuickPullGit implements Callable<ArrayList&l
linux shell 執行oracle儲存過程
在linux下用shell執行oracle的儲存過程 #### 函式 #### 說 明:執行oracle儲存過程 #### 輸入引數:{資料庫tns}{資料庫使用者名稱}{資料庫密碼}{儲存過程名}{批處理日期} #### 輸出引數:儲存過程執行結果 function
java呼叫oracle儲存過程例子
1,導jar包---ojdbc6.jar 2,建立一個分頁儲存過程 create or replace procedure my_page(v_in_tableName in varchar2,
工作總結24 Windows的任務計劃,定時執行oracle儲存過程或語句塊
1、在pl/sql中,建立一個儲存過程 create or replace procedure pro as begin /***業務程式***/ commit; end pro; 2、在某
java中呼叫儲存過程並傳遞list集合引數的方法
sql: CREATE OR REPLACE TYPE test as object( FID NUMBER, NUM nVARCHAR2(30), TESKID NUMBER, CID NUMBER, USERCODE nVARCHAR2(100) ) CREA
用java呼叫oracle儲存過程總結
這段時間開始學習寫儲存過程,主要原因還是因為工作需要吧,本來以為很簡單的,但幾經挫折,豪氣消磨殆盡,但總算搞通了,為了避免後來者少走彎路,特記述與此,同時亦對自己進行鼓勵。 一:無返回值的儲存過程 儲存過程為: CREATE OR REPLACE PROCEDURE TES
Java呼叫Oracle儲存過程
步驟: 1、編寫Oracle儲存過程 2、編寫資料庫獲取連線工具類 3、編寫簡單應用呼叫儲存過程 實現: 1、Oracle儲存過程: /*測試表*/ create table test( id varchar2(32)
java後臺發送請求並獲取返回值
otto wid eight quest 所有 ica 輸出流 lds thead 項目中需要前端發送請求給後端,而後端需要從另一個平臺中取數據然後再透傳給前端,通過下述代碼將其實現.在此記錄一下.package com.autotest.utils;import java
VB6下的ado Command呼叫儲存過程,讀取返回值
最近在給老程式(VB6+SQL2005+水晶報表)新增備份、恢復資料庫功能。真心是手動備份資料庫太勞累,且顯得不專業,呵呵。呼叫sp_addumpdevice過程時,發生這SP有返回值,度娘了一圈,很少有提出儲存過程返回值如何在ADO Command中如何引用。 瞎寫的程式
java傳list到Oracle儲存過程執行慢
儲存過程功能是迴圈對list遍歷,對錶進行插入操作,插入異常則進行修改操作。 可能為update語句執行慢,可是表裡有主鍵,update時主鍵為條件,走主鍵應該不會慢。 單獨把update語句拿出執行,不慢。 最終找出原因,list中物件用的為nvarchar而表裡主鍵為varchar2,執行語句時Or
Oracle儲存過程請求WebService並解析返回報文
WebService請求報文: <soapenv:Envelope xmlns:soapenv="" http://schemas.xmlsoap.org/soap/envelope/ ""> <soap:Header xmlns:soap="" htt
Java執行cmd命令並接收返回結果
String command="ipconfig -all"; String s="IPv4"; String line = null; StringBuilder sb = new S