Oracle创建临时表、存储过程,Java调用存储过程
2018-12-01 16:22
99 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/apple_HYYYY/article/details/84674673
创建临时表
[code]create global temporary table TEMP_JOURNAL_TEST ( ROWNUMBER NUMBER, TRANS_DAY VARCHAR2(64), ID VARCHAR2(64), -- ID TRANS_NUM VARCHAR2(64), SUBJECT VARCHAR2(64), VOUCHER_ID VARCHAR2(64), CONTENT VARCHAR2(64), SETTLEMENT_NUM VARCHAR2(64), SUMMARY VARCHAR2(64), CURRENCY_TYPE VARCHAR2(64), DEBIT_AMOUNT NUMBER(15,2), CREDIT_AMOUNT NUMBER(15,2), NAME VARCHAR2(64), BILL_NAME VARCHAR2(64), BILL_NO VARCHAR2(64), ACCOUNT_ID VARCHAR2(64), IS_POST VARCHAR2(4) ) on commit preserve rows;
创建存储过程
[code]CREATE OR REPLACE PROCEDURE SP_JOURNAL_SEARCH ( -- 定义参数 ACCOUNTID INTEGER, ACCOUNTTYPE INTEGER, TOTAL VARCHAR2, BEGIN_DATE VARCHAR2, END_DATE VARCHAR2, OUT_RESULT OUT SYS_REFCURSOR -- 游标 ) AS -- 定义变量 TMP_BALANCE FLOAT := 0; BEGIN -- INTO :给变量赋值 SELECT BALANCE INTO TMP_BALANCE FROM CU_ACCOUNTBOOK WHERE ID = ACCOUNTID; -- 删除临时表数据 DELETE FROM TEMP_JOURNAL_SEARCH; -- 添加数据到临时表 INSERT INTO TEMP_JOURNAL_SEARCH ( ROWNUMBER, TRANS_DAY, ID, TRANS_NUM, SUBJECT, VOUCHER_ID, CONTENT, SETTLEMENT_NUM, SUMMARY, CURRENCY_TYPE, DEBIT_AMOUNT, CREDIT_AMOUNT, NAME, BILL_NAME, BILL_NO ) SELECT ROWNUM AS ROWNUMER, A.* FROM ( SELECT TO_CHAR( TRANS_DATE, 'YYYY-MM-DD' ) TRANS_DAY, A.ID, A.TRANS_NUM, A.SUBJECT, A.VOUCHER_ID, X.CONTENT, A.SETTLEMENT_NUM, A.SUMMARY, Z.CURRENCY_TYPE, A.DEBIT_AMOUNT, A.CREDIT_AMOUNT, U.NAME, V.BILL_NAME, K.BILL_NO FROM CU_JOURNAL A LEFT JOIN CU_ACCOUNTBOOK Z ON Z.ID = A.ACCOUNT_ID LEFT JOIN CU_SETTLEMENT X ON X.ID = A.SETTLEMENT_ID LEFT JOIN SYS_USER U ON U.ID = A.DEAL_WITH LEFT JOIN CU_BILLTYPE V ON V.ID = A.BILLTYPE_ID LEFT JOIN CU_BILLBOOK K ON K.ID = A.BILLBOOK_ID WHERE A.ACCOUNT_ID = ACCOUNTID AND Z.ACCOUNT_TYPE = ACCOUNTTYPE AND TO_CHAR( TRANS_DATE, 'YYYY-MM-DD' ) BETWEEN BEGIN_DATE AND END_DATE ORDER BY TRANS_DATE, ID ) A; -- 查询数据 OPEN OUT_RESULT FOR SELECT * FROM ( SELECT TO_CHAR( SUMMARY ) SUMMARY, TRANS_DAY, DEBIT_AMOUNT AS DEBITAMOUNT, CREDIT_AMOUNT AS CREDITAMOUNT, ( SELECT TMP_BALANCE + SUM( DEBIT_AMOUNT ) - SUM( CREDIT_AMOUNT ) FROM TEMP_JOURNAL_SEARCH WHERE ROWNUM <= A.ROWNUMBER ) AS BALANCE, TRANS_NUM AS TRANSNUM, SUBJECT AS SUBJECT, VOUCHER_ID AS VOUCHERID, CONTENT, SETTLEMENT_NUM AS SETTLEMENTNUM, CURRENCY_TYPE AS CURRENCYTYPE, NAME, BILL_NAME AS BILLNAME, BILL_NO AS BILLNO, ID FROM TEMP_JOURNAL_SEARCH A ) B ORDER BY TRANS_DAY NULLS FIRST, ID; END;
Java后台调用
[code]Mapper: <resultMap id="cursorMap" type="Journal" > <result column="transDay" property="transDay" /> <result column="content" property="content" /> <result column="currencyType" property="currencyType" /> <result column="name" property="name" /> <result column="billName" property="billName" /> <result column="billNo" property="billNo" /> </resultMap > <select id="getJournalSearchGridData" statementType="CALLABLE"> CALL SP_JOURNAL_SEARCH( #{ACCOUNTID,mode=IN}, #{ACCOUNTTYPE,mode=IN}, #{TOTAL,mode=IN}, #{BEGIN_DATE,mode=IN}, #{END_DATE,mode=IN}, ) </select>
[code]Dao层: public abstract List<Map<String,Object>> getJournalSearchGridData(Map<String, Object> map);
[code]Service层: /**map: 参数**/ public Page<Map<String,Object>> findPageSearch(Page<Map<String,Object>> page, Map<String, Object> map) { dao.getJournalSearchGridData(map); List<Map<String, Object>> list =(List<Map<String,Object>>) map.get("OUT_RESULT"); page.setList(list); return page; }
相关文章推荐
- Oracle 创建存储过程以及PlSql 调用 存储过程
- oracle实现存储过程的分页并用java代码调用存储过程
- Day60-Oracle04 - PLSQL编程、游标cursor、例外exception、存储过程(procedure)、存储函数(function)、java调用存储过程、触发器(trigger)
- 结合oracle中的存储过程,在Java中调用并测试该存储过程
- Java调用oracle存储过程通过游标返回临时表数据
- Java调用oracle存储过程通过游标返回临时表数据
- mysql创建 存储过程 并通过java程序调用该存储过程
- oracle中创建存储过程,以及存储过程中调用游标
- 游标、例外、存储过程、存储函数、java调用存储过程、触发器(Oracle之二)
- 游标、例外、存储过程、存储函数、java调用存储过程、触发器(Oracle之二)
- 创建oracle的存储过程,以及通过JDBC调用该存储过程
- 创建存储过程和java调用存储过程
- mysql 创建存储过程 java程序调用该存储过程
- Oracle 存储过程的创建,及触发器调用存储过程
- Java调用oracle存储过程通过游标返回临时表数据
- oracle 存储过程调用java一
- 最完整的:JAVA调用ORACLE的存储过程、函数的返回结果集例子
- java下实现调用oracle的存储过程和函数
- [Database]创建存储过程并在ASP.NET中的调用带参数的存储过程与及调用带参数的SQL语句对比
- java 调用oracle存储过程传入 数组参数 不用纯jdbc连接