java調(diào)用存儲過程實例

2018-11-29 16:14 更新
  1. package com.xxx.srm.sourcing.service.impl;
  2. import java.sql.CallableStatement;
  3. import java.sql.Connection;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7. import java.text.DecimalFormat;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import org.apache.ibatis.session.SqlSession;
  13. import org.apache.ibatis.session.SqlSessionFactory;
  14. import org.mybatis.spring.SqlSessionFactoryBean;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import com.framework.common.util.StringUtil;
  18. @Service
  19. public class QuarterPeDao {
  20. @Autowired
  21. private SqlSessionFactoryBean sqlSessionFactory;
  22. public Map<String,Object> executeOracleStoredProcedure(String peNum){
  23. CallableStatement cstmt = null;
  24. ResultSet rs1=null;
  25. ResultSet rs2=null;
  26. String param="$per_num$="+peNum;
  27. Map<String,Object> map=new HashMap<String,Object>();
  28. List<String> works=new ArrayList<String>();
  29. float count=0;
  30. DecimalFormat df = new DecimalFormat("0.00");
  31. try {
  32. SqlSessionFactory factory= sqlSessionFactory.getObject();
  33. SqlSession session=factory.openSession();
  34. Connection connect=session.getConnection();
  35. cstmt = connect.prepareCall("{CALL pkg_public_int.get_data(?,?,?,?,?)}");
  36. cstmt.setString(1, "PE_INIT");
  37. cstmt.setString(2, param);
  38. cstmt.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR);
  39. cstmt.registerOutParameter(4, oracle.jdbc.OracleTypes.CURSOR);
  40. cstmt.registerOutParameter(5, oracle.jdbc.OracleTypes.FLOAT);
  41. cstmt.execute();
  42. rs1=(ResultSet) cstmt.getObject(3);
  43. rs2=(ResultSet) cstmt.getObject(4);
  44. count=cstmt.getFloat(5);
  45. List<Map<String,Object>> resultList=new ArrayList<Map<String,Object>>();
  46. while(rs2.next()){
  47. String site=rs2.getString(1);
  48. works.add(site);
  49. }
  50. String[] header = new String[works.size()];
  51. header=works.toArray(header);
  52. while (rs1.next()) {
  53. Map<String, Object> mapObj = new HashMap<String, Object>();
  54. mapObj.put("companyCode", rs1.getString("COMPANY_CODE"));
  55. mapObj.put("itemCode",rs1.getString("ITEMGROUPOUT_CODE"));
  56. mapObj.put("vendorCode", rs1.getString("VENDOR_CODE"));
  57. mapObj.put("vendorName", rs1.getString("VENDOR_NAME"));
  58. mapObj.put("year", rs1.getString("YEAR"));
  59. mapObj.put("quarter", rs1.getString("QUARTER"));
  60. for(int j = 0; j < header.length; j++){
  61. String qty = rs1.getString("QTY_" + header[j])+"";
  62. String je = rs1.getString("JE_" + header[j]);
  63. if (!StringUtil.isEmpty(qty)) {
  64. qty = df.format(Double.parseDouble(qty)) + "%";
  65. }
  66. if (!StringUtil.isEmpty(je)) {
  67. je = df.format(Double.parseDouble(je)) + "%";
  68. }
  69. mapObj.put("qty"+header[j], qty);
  70. mapObj.put("je"+header[j], je);
  71. mapObj.put("fqty"+header[j], rs1.getString("FQTY_" + header[j]));
  72. mapObj.put("fje"+header[j], rs1.getString("FJE_" + header[j]));
  73. }
  74. resultList.add(mapObj);
  75. }
  76. map.put("works", header);
  77. map.put("list", resultList);
  78. map.put("count", count);
  79. }
  80. catch (Exception e) {
  81. e.printStackTrace();
  82. }finally{
  83. close(cstmt);
  84. }
  85. return map;
  86. }
  87. public void close(Statement stat)
  88. {
  89. try
  90. {
  91. if (stat != null)
  92. {
  93. stat.close();
  94. }
  95. }
  96. catch (SQLException e)
  97. {
  98. e.printStackTrace();
  99. }
  100. }
  101. }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號