ibatis呼叫oracle儲存過程(極簡版)
版本:ibatis-2.3.4.726.jar。(與其他版本及mybatis用法基本一致)
###建立儲存過程
create or replace procedure nayi_test_pro_0703(in_obj1 in number,out_obj out number, in_obj2 in number) is
begin
out_obj := 10000 + in_obj1 + in_obj2;
end nayi_test_pro_0703;
就是傳兩個引數,做加法運算後返回。
###xml語句
<sqlMap namespace="blog">
<parameterMap class="java.util.Map" id="para">
<parameter property="in_obj1" jdbcType="NUMERIC" javaType="java.lang.Double" mode="IN" />
<parameter property="out_obj" jdbcType="NUMERIC" javaType="java.lang.Double" mode="OUT" />
<parameter property="in_obj22" jdbcType="NUMERIC" javaType="java.lang.Double" mode="IN" />
</parameterMap>
<procedure id="testPro" parameterMap="para">
<![CDATA[
{call nayi_test_pro_0703(?, ?, ?)}
]]>
</procedure>
</sqlMap>
注意!
parameterMap
中的parameter
會按照順序傳遞到儲存過程中。property
只 與java中呼叫時的bean的屬性對應。mode
貌似沒什麼用。就算把in寫成out,它照樣能跑。jdbcType
一般都支援:Array, BigInt, Binary, Bit, Blob, Boolean, Char, Clob, Datalink, Date, Decimal, Double, Float, Integer, LongVarBinary, LongVarChar, Numeric, Real, Ref, SmallInt, Struct, Time, Timestamp, TinyInt, VarBinary, VarChar.(大小寫不敏感)。
###java程式碼
public static void main(String[] args) throws SQLException, IOException {
// TODO Auto-generated method stub
Map bean = new HashMap();
bean.put("in_obj1", 4444.4);
bean.put("in_obj22", 3333.3);
Map map = (Map) SqlMapClientBuilder.buildSqlMapClient(Resources.getResourceAsReader("config/SqlMapConfig.xml"))
.queryForObject("blog.testPro", bean);
System.out.println(map);
System.out.println(bean);
}
輸出結果
2018-07-13 16:36:04,534 [java.sql.Connection]-[DEBUG] {conn-100000} Connection
2018-07-13 16:36:04,537 [java.sql.Connection]-[DEBUG] {conn-100000} Preparing Call: {call nayi_test_pro_0703(?, ?, ?)}
2018-07-13 16:36:04,727 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Executing Statement: {call nayi_test_pro_0703(?, ?, ?)}
2018-07-13 16:36:04,728 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Parameters: [4444.4, 3333.3]
2018-07-13 16:36:04,728 [java.sql.PreparedStatement]-[DEBUG] {pstm-100001} Types: [java.lang.Double, java.lang.Double]
null
{out_obj=17777.7, in_obj1=4444.4, in_obj22=3333.3}
可以看到,返回值是null。返回的引數被新增到了傳入的引數中。key為xml中所配置的。
為了簡化程式碼,上面的例子用的是Map傳的引數。用bean的話也是可行的。具體程式碼基本一樣,就不寫了。
相關文章
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- 呼叫儲存過程儲存過程
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- Oracle儲存過程Oracle儲存過程
- linux呼叫儲存過程Linux儲存過程
- Winform呼叫儲存過程ORM儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程-1Oracle儲存過程
- jsp中呼叫儲存過程JS儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- MySQL儲存過程語句及呼叫MySql儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- jdbc使用call呼叫儲存過程報錯JDBC儲存過程
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- MySQL入門系列:儲存程式(三)之儲存過程簡介MySql儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- 關於SQL Server中儲存過程在C#中呼叫的簡單示例SQLServer儲存過程C#
- SQLSERVER儲存過程SQLServer儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 通過EFCore呼叫GBase8s資料庫儲存過程資料庫儲存過程
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- Oracle儲存過程乾貨(二):PLSQL控制語句Oracle儲存過程SQL
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- oracle儲存過程許可權繼承小結Oracle儲存過程繼承
- ORACLE PL/SQL 物件、表資料對比功能儲存過程簡單實現OracleSQL物件儲存過程
- JdbcTemplate調儲存過程JDBC儲存過程
- 造數儲存過程儲存過程