1. 程式人生 > >mybatis呼叫Oracle儲存過程返回結果集

mybatis呼叫Oracle儲存過程返回結果集

在開發中,有時需要關聯幾張表來進行一些複雜的計算,此時可採用建立一張臨時表,將每次的資料計算後先存入臨時表,然後通過Oracle的遊標返回。

在mybatis中的呼叫如下:

//呼叫語法格式,需要構造一個resultMap,用來接收返回的結果集
<select id="queryManagerSalaryDet" resultType="java.util.Map" statementType="CALLABLE">
    <![CDATA[ {call proc_nur_calculate_salary_m(#{userId,mode=IN,jdbcType=VARCHAR},#{yymm,mode=IN,jdbcType=VARCHAR},#{out_value,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=salary})}]]>	
</select>

在service層呼叫如下:

//在service層呼叫,out_value為儲存過程出參
statisticsMapper.queryWorkerSalaryDet(map);
List<Map<String, Object>> list  = (List<Map<String, Object>>) map.get("out_value");

附:Oracle臨時表建立如下:

create global temporary table TEMP_TBL_NUR_SALARY
(
   om_id varchar2(20);
   ser_name varchar2(128);
   create_time date;
   days integer;
   price number;
   salary_t number(16,2);
   comm_rate_m varchar(20);
   salary number(16,2);
   person_name varchar2(32);
   yy_mm varchar2(20);
   person_id varchar2(20);
   person_mobile varchar2(12);
   total_amount number(16,2);
   refund_money number(16,2);
   real_amount number(16,2);
)
on commit delete rows;

相關推薦

mybatis呼叫Oracle儲存過程返回結果

在開發中,有時需要關聯幾張表來進行一些複雜的計算,此時可採用建立一張臨時表,將每次的資料計算後先存入臨時表,然後通過Oracle的遊標返回。 在mybatis中的呼叫如下: //呼叫語法格式,需要構造一個resultMap,用來接收返回的結果集 <select id

SSM-Mybatis呼叫Oracle儲存過程返回結果(遊標)示例

1.建立一個包 此處建立一個包,是為了建立儲存過程時,用遊標作為out輸出引數時宣告為遊標型別用的. --建立一個包 create or replace package types as type empListCursor is ref cursor

C#呼叫ORACLE儲存過程返回結果

Oracle中scott使用者下建立儲存過程: (注:從9i開始有了sys_refcursor這種型別,在以前的Oracle版本中需要使用REF CURSOR,並且還需放在一個程式包中) create or replace procedure sp_getdept (result

mybatis呼叫mysql儲存過程返回結果

儲存過程中經常需要返回結果集。Mysql中直接用select即可返回結果集。而oracle則需要使用遊標來返回結果集。這一點Mysql相對比較方便,如下程式碼即可實現輸出結果集: 儲存過程定義: D

oracle 儲存過程返回結果 (轉載)

好久沒上來了, 難道今天工作時間稍有空閒, 研究了一下oracle儲存過程返回結果集.        配合oracle臨時表, 使用儲存過程來返回結果集的資料讀取方式可以解決海量資料表與其他表的連線問題. 在儲存過程中先根據過濾條件從海量資料表中選出符合條件的記錄並存放到臨

python 呼叫mysql儲存過程返回結果

儲存過程: delimiter | create procedure get_product_info(in imid int(10),int iuser varchar(20)) begin select * from tb_test where mid = i

mybatis呼叫oracle儲存過程 返回sys_refcursor

Map<String, Object> map = new HashMap<String, Object>(); map.put("id", "0"); mapper.selectPosBy(map); return (List) map

oracle 儲存過程返回 結果 table形式

--sys_refcursor 和 cursor 優缺點比較優點比較優點一:sys_refcursor,可以在儲存過程中作為引數返回一個table格式的結構集(我把他認為是table型別,容易理解,其實是一個遊標集), cursor 只能用在儲存過程,函式,包等的實現體中,不

mybatis呼叫oracle儲存過程返回遊標 讀取到java的List

mapper: <select id="testP" statementType="CALLABLE" > {call P_TEST(#{v_cursor, mode=OUT, jdbcType=CURSOR})} </select> ja

關於oracle呼叫儲存過程返回結果

這兩天因為公司要求,去學習了下以前一直模模糊糊的儲存過程,記錄下關於返回結果集的問題。 要返回結果集,首先你必須有個遊標,它是記錄你的查詢集的。而定義一個遊標有好多方法: 1,你可以在包中定義。然後將遊標變數作為儲存過程引數的型別。 CREATE OR REPLACE P

[Oracle]高效的PL/SQL程式設計(五)--呼叫儲存過程返回結果

            Oracle.DataAccess.Client.OracleConnection oracleConnection1=new OracleConnection("data source=precolm2;user id=colmtest;password=colmtest");   

MyBatis呼叫儲存過程返回結果

儲存過程: create or replace procedure get_result_by_sql(p_sql in varchar2,p_result out sys_refcursor,p_msg out varchar2) is begin

mybatis 呼叫oracle儲存過程,傳參、返回遊標的值獲取--示例

1,dao層程式碼 Integer currentlq_fsx = getSqlSession().selectOne("lqMapper.maxscore"); Map<String,Object> map = new HashMap<String,O

java呼叫儲存過程 返回結果

Java程式碼呼叫儲存過程:public Map<String, Object> rankInfo(Map<String, Object> rankMap,String start,String end, String userId,String o

Oracle儲存過程返回結果

Oracle儲存過程: CREATE OR REPLACE PROCEDURE getcity ( citycode IN VARCHAR2, ref_cursor O

JAVA呼叫儲存過程--返回結果(傳入基本型別引數,返回基本型別和結果

1  建立儲存過程 create or replace procedure examplepro( inparm1 in varchar2,inparm2 in number,outparm1 out number,result out type_cursor)  ...

mybatis呼叫oracle儲存過程

1.無輸入和輸出引數的儲存過程我寫了一個比較簡單的,需要注意的是Oracle無參儲存過程不能寫括號CREATE OR REPLACE Procedure cascadeoperation As Begin  Delete From teacher Where id=1;  U

C#呼叫Oracle儲存過程返回結果

1.建立一個儲存過程: createorreplaceprocedure GET_PERSON ( RC1 outsys_refcursor, RC2 outsys_refcursor ) is begin open RC1 for select * from PERSO

mybatis呼叫mysql儲存過程返回引數,單結果,多結果

一、接收一個返回值 使用Map接收返回引數,output引數放在傳入的param中 建立表 DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` int(11) NOT NULL AUTO_INCREMEN

如何在Delphi中呼叫oracle儲存過程返回資料

::::::本文的相關評價及說明資訊:::::: 【delphi+oracle報表解決方案(一)】delphi中呼叫oracle的儲存過程(分帶返回遊標,不返回值兩種)  關鍵字: delphi ,oracle儲存過程,遊標,返回資料集,報表 注:delphi 6+ oracle 8.1.6 一.建立包與