`
y806839048
  • 浏览: 1090623 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    SQL_Server存储过程调试指南

    资源名称:SQL_Server存储过程调试指南内容简介: 存储过程( Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...

    Informatica调用存储过程图文流程

    Informatica调用存储过程图文流程 Informatica 是一款功能强大的数据集成工具,能够帮助用户快速、可靠地集成各种数据源。调用存储过程是 Informatica 中的一种常用功能,下面将详细介绍 Informatica 调用存储过程...

    针对sqlserver 2008 存储过程通过With Encryption加密方式的解密

    针对 SQL Server 2008 存储过程通过 With Encryption 加密方式的解密 SQL Server 2008 存储过程中使用 With Encryption 加密方式可以对存储过程进行加密保护,以防止未经授权的访问和修改。但是,在某些情况下,...

    SQL Server中存储过程比直接运行SQL语句慢的原因

    在了解这个问题之前,我们通常认为存储过程具有以下优点:首先,存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的 SQL 语句每执行一次就编译一次,所以使用存储过程可以...

    高效分页存储过程 高效分页存储过程

    sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程

    Sql Server 存储过程的导出导入.doc

    SqlServer存储过程的导出导入 近日在研究SQL的存储过程,这里我陆续将我在使用存储过程中碰到的问题及解决办法发布到网上,请各位大虾指正。 SqlServer存储过程的导出导入,网上相关资料特别少,经过摸索,这里写...

    118个真实应用场景的Oracle存储过程案例及开发指南(从入门到熟练使用)

    1、资料包含了作者编写的实际应用场景中使用的存储过程代码,共计118个案例,有完整注释说明。旨在帮助读者通过案例学习,快速掌握存储过程的应用方法和技巧。 2、博主博客:...

    数据库原理及应用实验四(存储过程和触发器)

    创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出...

    Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...

    birt调用存储过程

    birt报表中调用存储过程的方法. 目录 1. 概述 3 2. BIRT支持的存储过程返回值类型 3 3. BIRT调用存储过程的语法 4 4. 创建存储过程数据源/集 4 5. 在BIRT中使用存储过程 5 调用返回单结果集的存储过程。 5 调用...

    实验八 存储过程的使用(学生).doc

    "实验八 存储过程的使用(学生)" 本实验的目的是让学生掌握创建存储过程的基本方法,并学会使用 Transact-SQL 编写存储过程的方法。实验中,学生需要创建多个存储过程来完成不同的数据库操作,例如检索学生基本...

    实验9 存储过程的创建和使用

    阅读实验教材《SQL Server 2012数据库管理与开发》第137页到155页的内容,掌握存储过程的概念、了解存储过程的类别(系统存储过程,用户自定义存储过程,扩展存储过程);掌握存储过程的建立;掌握存储过程的两种...

    SQL存储过程SQL存储过程SQL存储过程

    存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程SQL存储过程

    在VB6.0中调用SQL Server的存储过程.pdf

    "VB6.0中调用SQL Server的存储过程" 在VB6.0中调用SQL Server的存储过程是VB开发者经常遇到的问题,本文将详细介绍如何在VB6.0中调用SQL Server的存储过程,并对存储过程的优点和使用方法进行了详细的解释。 首先...

    mysql存储过程之返回多个值的方法示例

    本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...

    MySQL数据库:存储过程的创建1.pptx

    创建存储过程1 课程目标 1)了解 ——存储过程的优点; 2)理解 —— 存储过程的概念; 3)掌握 —— 存储过程的创建方法; 存储过程优点 使用存储过程的优点有: (1)存储过程在服务器端运行,执行速度快。 (2)...

    SQLServer存储过程转为oracle存储过程的工具

    可以将SQL Server存储过程转为oracle存储过程的工具

    db2 存储过程语法与实例

    db2 存储过程 db2 存储过程 db2 存储过程

    oracle存储过程实例

    oracle 存储过程实例 oracle存储过程实例

Global site tag (gtag.js) - Google Analytics