`
y806839048
  • 浏览: 1126174 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

存储过程

阅读更多
////调用存储过程方法

import java.sql.Connection;
import java.sql.Driver;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@SuppressWarnings("unchecked")
protected void doTestConnect() throws Throwable {
Connection con = null;
try {
Class driverClass = Class
.forName("oracle.jdbc.driver.OracleDriver");
java.sql.DriverManager.registerDriver((Driver) driverClass
.newInstance());
con = java.sql.DriverManager.getConnection(
"jdbc:oracle:thin:@//192.168.7.190:1521/DSDB", "JS12110xc",
"JS12110xc");
try {
PreparedStatement pstmt = con
.prepareStatement("{call dbo.uspGetEmployeeManagers(?)}");
pstmt.setInt(1, 50);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {

}
rs.close();
pstmt.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
} catch (ClassNotFoundException ce) {
throw ce;
} catch (Exception e) {
throw e;
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
throw e;
}
}

}


public static void executeStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");
   cstmt.setInt(1, 5);
   cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
   cstmt.execute();
   System.out.println("MANAGER ID: " + cstmt.getInt(2));
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }


public static void executeUpdateStoredProcedure(Connection con) ...{
   try ...{
   CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");
   cstmt.setString(1, "A");
   cstmt.setInt(2, 100);
   cstmt.execute();
   int count = cstmt.getUpdateCount();
   cstmt.close();
  
   System.out.println("ROWS AFFECTED: " + count);
   }
   catch (Exception e) ...{
   e.printStackTrace();
   }
  }

CallableStatement cstmt = con.prepareCall("{? = call dbo.CheckContactCity(?)}");

      cstmt.registerOutParameter(1, java.sql.Types.INTEGER);

      cstmt.setString(2, "Atlanta");

      cstmt.execute();

      System.out.println("RETURN STATUS: " + cstmt.getInt(1));

  

public static void executeSprocNoParams(Connection con) ...{
   try ...{
   Statement stmt = con.createStatement();
  ResultSet rs = stmt.executeQuery("{call dbo.GetContactFormalNames}");
  
   while (rs.next()) ...{
 System.out.println(rs.getString("FormalName"));
  }
  rs.close();
  stmt.close();
  }
  catch (Exception e) ...{
  e.printStackTrace();
  }
  }



protected void doTestConnect(String begintime, String endtime)
throws Throwable {
Connection con = null;
try {
Class driverClass = Class
.forName("oracle.jdbc.driver.OracleDriver");
java.sql.DriverManager.registerDriver((Driver) driverClass
.newInstance());
con = java.sql.DriverManager.getConnection(
"jdbc:oracle:thin:@//10.32.203.151:1521/DSDB", "dsdb",
"manager");
try {
PreparedStatement pstmt = con
.prepareStatement("{call dsdb.proc_stat_lbs(?, ?)}");

pstmt.setString(1, begintime);
pstmt.setString(2, endtime);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {

}
rs.close();
pstmt.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
} catch (ClassNotFoundException ce) {
throw ce;
} catch (Exception e) {
throw e;
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
throw e;
}
}

}


存储过程:
create or replace procedure proc_stat_lbs as
  nowtime varchar(50);
begin
  nowtime := to_char(sysdate, 'yyyymmdd');

  DELETE FROM T_TEMP_QUERY_LBS;
  INSERT INTO T_TEMP_QUERY_LBS (YYS, PUSH_COUNT, REQ_COUNT, SUCCESS_COUNT) VALUES (0, 0, 0, 0);
  INSERT INTO T_TEMP_QUERY_LBS (YYS, PUSH_COUNT, REQ_COUNT, SUCCESS_COUNT) VALUES  (1, 0, 0, 0);
  INSERT INTO T_TEMP_QUERY_LBS (YYS, PUSH_COUNT, REQ_COUNT, SUCCESS_COUNT) VALUES  (2, 0, 0, 0);
  INSERT INTO T_TEMP_QUERY_LBS (YYS, PUSH_COUNT, REQ_COUNT, SUCCESS_COUNT) VALUES  (3, 0, 0, 0);

  UPDATE T_TEMP_QUERY_LBS SET
  REQ_COUNT = (select count(*) from ds_lbs_info where yysid = '1'
   and to_char(querytime, 'yyyymmdd')  >= nowtime)
  where yys = 1;

  UPDATE T_TEMP_QUERY_LBS SET
  SUCCESS_COUNT = (select count(*) from ds_lbs_info where yysid = '1' and senderx is not nulL
   and to_char(querytime, 'yyyymmdd')  >= nowtime)
  where yys = 1;

  UPDATE T_TEMP_QUERY_LBS SET
  REQ_COUNT = (select count(*) from ds_lbs_info where yysid = '3'
   and to_char(querytime, 'yyyymmdd')  >= nowtime)
  where yys = 3;

  UPDATE T_TEMP_QUERY_LBS SET
  SUCCESS_COUNT = (select count(*) from ds_lbs_info where yysid = '3' and senderx is not nulL
   and to_char(querytime, 'yyyymmdd')  >= nowtime)
  where yys = 3;
 
  update t_temp_query_lbs set req_count =
  (select sum(Req_count) from t_temP_query_lbs where yys <> 0) where yys = 0;

  update t_temp_query_lbs set SUCCESS_COUNT =
  (select sum(SUCCESS_COUNT) from t_temP_query_lbs where yys <> 0) where yys = 0;

END;



public String flex() throws Throwable {
Connection con = null;
try {
Class driverClass = Class
.forName("oracle.jdbc.driver.OracleDriver");
java.sql.DriverManager.registerDriver((Driver) driverClass
.newInstance());
con = java.sql.DriverManager.getConnection(
"jdbc:oracle:thin:@//10.10.46.2:1521/orcl", "zwww",
"zwww");
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("{call zwww.flex}"); //用户名
rs.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
} catch (ClassNotFoundException ce) {
throw ce;
} catch (Exception e) {
throw e;
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
throw e;
}
}
}



===========select count(1)用这个解决统计没有数字出现的的现=======

create or replace procedure test is
  ok  number;
  bad number;
  zs  number;
  i   number;
  j   number;
  k   number;
  okwl  number;
  badwl number;
  okfw  number;
  badfw number;
  oksj  number;
  badsj number;
  Cursor cursor1 is
     select distinct(t.district_code) as code from T_B_ORG t;
  my_record cursor1%rowtype;
begin

  open cursor1;

  delete from t_b_flex;
  --一个区域多个用户节点上每类资源可用性
  i := 1;
  if cursor1%isopen then
    loop
      fetch cursor1
        into my_record;
      if cursor1%found then
     
        k := 1;
        --  select count(1) into j from T_B_ORG t where t.district_code =my_record.code;
        -- while k<=j loop
        --   begin
        --安全设备
        select count(1)
          into ok
          from (select a.asset_type, a.asset_state
                  from t_b_topsec_asset a
                 where a.ip in
                       (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
                   and a.asset_state = '0'
                 group by a.asset_type, a.asset_state);
        --select t.ip from T_B_ORG t where t.district_code =my_record.code and rownum=k
        select count(1)
          into bad
          from (select decode(count(1), null, '0', count(1)) c2
                  from t_b_topsec_asset a
                 where a.ip in
                       (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
                   and a.asset_state = '1'
                 group by a.asset_type, a.asset_state) /*,a.ip*/;
     
        --网络设备
        select count(1) into okwl
          from t_b_resource t
          where t.ip in (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
           and t.is_netdevice = 1
           and t.resource_status like 'true';
          
         select count(1) into badwl
          from t_b_resource t
          where t.ip in (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
           and t.is_netdevice = 1
           and t.resource_status like 'flase';
       --服务器及存储
        select count(1) into okfw
          from t_b_resource t
          where t.ip in (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
           and t.is_netdevice = 0
           and t.resource_status like 'true';
          
         select count(1) into badfw
          from t_b_resource t
          where t.ip in (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
           and t.is_netdevice = 0
           and t.resource_status like 'flase';
         --事件工单
          select count(1) into oksj
          from T_B_TROUBLEWORK t
          where t.ip in (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
           and t.gzsfjj  like '是';
           
           select count(1) into badsj
          from T_B_TROUBLEWORK t
          where t.ip in (select t.ip
                          from T_B_ORG t
                         where t.district_code = my_record.code)
           and t.gzsfjj  not like '是'; 
       insert into t_b_flex
          (id, okaq, badaq, okwl, badwl,okfw, badfw,oksj, badsj ,dis_code)
       values
          (i, ok, bad, okwl, badwl,okfw, badfw,oksj, badsj , my_record.code);
     
        i := i + 1;
       
        -- end;
        -- end loop;
     
      else
        exit;
      end if;
    end loop;
  else
    dbms_output.put_line('游标没有打开');
  end if;
  close cursor1;

  commit;

exception
  when others then
    rollback;
 
end test;



返回游标形式输出参数的存数过程



public static void pro() throws Exception{
Connection con = null;
Class driverClass = Class
.forName("oracle.jdbc.driver.OracleDriver");
java.sql.DriverManager.registerDriver((Driver) driverClass
.newInstance());
con = java.sql.DriverManager.getConnection(
"jdbc:oracle:thin:@//10.10.46.2:1521/orcl", "zwww",
"zwww");
CallableStatement cs = con.prepareCall("{ call retCursor(?) }");    
cs.registerOutParameter(1,OracleTypes.CURSOR);    
cs.execute();    
ResultSet rs = ((OracleCallableStatement)cs).getCursor(1);    
while(rs.next())    
{    
    System.out.println(rs.getString(1)+"  "+rs.getString(2)+"  "+rs.getString(3)+"  "+ rs.getString(4)+"  "+rs.getString(5));    
}  

}



create or replace procedure retCursor(ret_cursor out sys_refcursor)is   
ret_cursor_value  sys_refcursor;    
begin   
open ret_cursor_value for select * from t_b_processlog;    
ret_cursor:=ret_cursor_value;    
end retCursor;   



http://qinya.iteye.com/blog/622300



http://wenku.baidu.com/link?url=M-IRJaygbBWptMALrzbYf5ZwBGxj-JOd5yMnZiay_vZtIQJCmihUwjuFjhKR59LlEztFhPHJB5NFwuKIFxaXRv-kQ3BTvPG0ORWeOnAkTY3
分享到:
评论

相关推荐

    SAP HANA 中调试存储过程

    SAP HANA是一个高性能的内存数据库系统,它提供了一系列功能强大的工具来进行数据分析、应用开发、存储过程编写等操作。其中,对于存储过程的调试是开发者日常开发工作中的一个重要环节,SAP HANA为存储过程提供了...

    SqlServer存储过程及调试指南

    SqlServer存储过程及调试指南的知识点如下: 1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作...

    SQL存储过程试题及答案

    SQL存储过程试题及答案 SQL存储过程是数据库中的一种程序单元,能够完成特定的数据库操作。今天,我们将讨论三道关于SQL存储过程的试题,这些试题涵盖了存储过程的创建、调用和参数传递等方面。 1. 创建分数存储...

    pb调用存储过程

    在IT行业中,数据库操作是日常开发中的重要环节,而存储过程是数据库中一种高效、封装性强的预编译语句集合。本问题涉及到的是在PowerBuilder(简称Pb)环境中如何调用Oracle或SQL Server等数据库中的存储过程。以下...

    db2 存储过程语法与实例

    DB2存储过程是一种在数据库管理系统中预编译的SQL代码集合,它允许开发人员封装复杂的业务逻辑和数据处理操作,并可以被多次调用。DB2作为一款强大的关系型数据库管理系统,其存储过程功能强大,提高了应用程序的...

    sqlserver存储过程解密工具

    SQL Server存储过程是一种预编译的SQL代码集合,它们允许数据库开发者封装复杂的业务逻辑和数据操作,提高数据库应用的性能和可维护性。然而,由于存储过程的源代码通常是不可见的,对于需要查看或修改这些过程的...

    存储过程扩展学习

    在SQL Server中,存储过程分为不同种类,包括用户定义的存储过程、系统存储过程、临时存储过程以及扩展存储过程。 1. **用户定义的存储过程**:由开发人员或DBA创建,可以根据业务需求定制各种复杂操作,如数据处理...

    pl sql developer调试存储过程及调试包中创建的存储过程

    PL/SQL Developer 调试存储过程及调试包中创建的存储过程 PL/SQL Developer 调试存储过程是指使用 PL/SQL Developer 工具来调试 Oracle 数据库中的存储过程。调试存储过程可以帮助开发者快速地定位和解决存储过程...

    数据库查询的存储过程

    数据库查询的存储过程 数据库查询的存储过程是数据库管理系统中一种非常重要的概念。它可以将多个SQL语句组合成一个单元,提高数据库的查询效率和性能。 存储过程的优点: 1. 可以在单个存储过程中执行一系列SQL...

    存储过程的优点

    ### 存储过程的优点 #### 一、提升执行效率 1. **编译优势**:存储过程在创建时仅编译一次,之后每次执行时都无需再次编译。相比之下,一般的SQL语句每次执行都需要重新编译。这种差异使得存储过程能够显著提高...

    mysql存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...

    oracle存储过程学习经典入门

    本文将从 Oracle 存储过程的基础知识开始,逐步深入到 Oracle 存储过程的高级应用,包括 Hibernate 调用 Oracle 存储过程和 Java 调用 Oracle 存储过程的方法。 Oracle 存储过程基础知识 Oracle 存储过程是 Oracle...

    oracle 存储过程 函数 dblink

    ### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...

    C# winform调用SQL存储过程-菜鸟入门 详细注释

    内容概要:简单的C# winform调用存储过程实例,创建存储过程入参,通过SqlConnection对象和SqlCommand对象调用存储过程,获取存储过程的出参并显示出来,详细代码注释,希望对用到C#调用存储过程的小伙伴有帮助 ...

    MySQL存储过程的异常处理方法

    在MySQL中,存储过程是一种预编译的SQL代码集合,它可以执行复杂的操作并提供更好的性能。在编写存储过程时,异常处理是确保程序稳定性和健壮性的重要环节。本实例展示了如何在MySQL存储过程中实现异常处理,以捕获...

    用友r9知识存储过程

    《用友R9知识存储过程详解》 在IT行业中,特别是在企业级财务系统中,数据库的高效管理和数据处理是至关重要的。用友R9作为一款先进的财务管理系统,它利用存储过程这一强大的数据库功能来优化账务处理,提高系统...

    学习sql存储过程的心得

    SQL存储过程是数据库管理系统中一组为了完成特定功能的SQL语句集合,它们被预先编译并存储在数据库中,可以通过一个名称来调用执行。学习SQL存储过程是提升数据库管理和应用开发效率的关键步骤,它可以帮助我们更好...

    SQL Server存储过程对比工具

    SQL Server存储过程对比工具是一种高效且实用的软件解决方案,它专为数据库管理员和开发人员设计,用于比较和分析两个SQL Server数据库中的存储过程。这款工具的主要功能是帮助用户快速识别和定位不同数据库间存储...

    创建存储过程,触发器

    在数据库管理中,存储过程和触发器是两个重要的概念,它们极大地增强了数据库的功能和效率。存储过程是一组预先编写的SQL语句,可以被多次调用,减少了网络流量,提高了性能,并提供了更好的安全性。而触发器则是一...

Global site tag (gtag.js) - Google Analytics