package com.founder.ec.common.lucene;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

import oracle.jdbc.internal.OracleCallableStatement;
import oracle.jdbc.internal.OracleTypes;

public class ReadMysql {

    public static Connection getConnection() throws Exception {
        String url = "jdbc:oracle:thin:@192.168.";
        Class.forName("oracle.jdbc.driver.OracleDriver");
        String userName = "";
        String password = "";
        Connection con = DriverManager.getConnection(url, userName, password);
        return con;
    }

    /**
     * CREATE  PROCEDURE member_procedure_out(memberId in NUMBER,realname OUT  VARCHAR2,mobile_phone OUT VARCHAR2)
     */
//释放数据库资源
    public static void release(Connection con, CallableStatement call, ResultSet res) {
        if (res != null || call != null || con != null) {
            try {
                res.close();
                con.close();
                call.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                res = null;
                call = null;
                res = null;
            }

        }
    }

    public static void main(String[] args) {

        /**
         *
         CREATE  PACKAGE mypackage AS
         TYPE empcursor is REF CURSOR ;
         PROCEDURE queryEmpList(memberId in NUMBER,empList OUT empcursor);

         END mypackage;

         */
        try {
            //调用存储过程,根据会员id获得会员name
             // testpro();
            //调用存储函数,根据会员id计算其年收入
            //testfunction();
            //调用包下的存储过程,游标
            testCursor();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

            // release(con, call, null);
        }
    }

    private static void testCursor() {
        Connection con = null;
        CallableStatement call = null;
        try {
            String sql = "{call mypackage.queryEmpList(?,?)}";
            con = getConnection();
            call = con.prepareCall(sql);

            call.setInt(1,7923);
            call.registerOutParameter(2,OracleTypes.CURSOR);//光标

            call.execute();
           //取出该会员的所有信息
            ResultSet res = ((OracleCallableStatement) call).getCursor(2);
         while (res.next()){
             String name=res.getString("real_name");
             int memberId=res.getInt("member_id");
             System.out.print(name+memberId);
         }

        } catch (Exception e) {
            e.getMessage();
        }
    }

    private static void testfunction() {
        Connection con = null;
        CallableStatement call = null;
        try {

            String sql = "{?=call query_member(?)}";
            con = getConnection();
            call = con.prepareCall(sql);
            call.registerOutParameter(1,OracleTypes.NUMBER);
            call.setInt(2,7923);
            call.execute();
            double sum=call.getDouble(1);
            System.out.println(sum);

        } catch (Exception e) {
            e.getMessage();
        }

    }

    private static void testpro() {
        Connection con = null;
        CallableStatement call = null;
        try {

            String sql = "{call member_procedure_out(?,?)}";
            con = getConnection();
            call = con.prepareCall(sql);
            call.setInt(1, 7923);
            call.registerOutParameter(2, OracleTypes.VARCHAR);
        } catch (Exception e) {
            e.getMessage();
        }
        try {
            call.execute();
            String realName = call.getString(2);
            System.out.println(realName);
        } catch (Exception e) {
            e.printStackTrace();

        }

    }
}
create PROCEDURE raise_order_price_procedure(orderId in NUMBER )
  as
  psal ORDER_INFO.paid_fee%TYPE ;

  BEGIN

    select paid_fee into psal from ORDER_INFO where ORDER_ID=orderId;

     where ORDER_ID=orderId;

 dbms_output.put_line());
  END;

drop  PROCEDURE member_procedure_out;

  CREATE  PROCEDURE member_procedure_out(memberId in NUMBER,realname OUT  VARCHAR2)
  AS
    BEGIN

      select  m.REAL_NAME into realname from member m where m.MEMBER_ID=memberId;
    END;
/

--
BEGIN
  raise_order_price_procedure();
END;

  CREATE  FUNCTION query_member(memberId in NUMBER)
    RETURN NUMBER
    AS

      psal member.account_fee%type;
      pcomm member.sum_points%type;

    BEGIN
select  account_fee , sum_points INTO psal,pcomm from MEMBER where MEMBER_ID=memberId;
      );
    END;

  drop PACKAGE mypackage;

CREATE  PACKAGE mypackage AS
  TYPE empcursor is REF CURSOR ;
  PROCEDURE queryEmpList(memberId in NUMBER,empList OUT empcursor);

  END mypackage;

create or replace  PACKAGE  BODY mypackage AS
  PROCEDURE queryEmpList(memberId in NUMBER,empList OUT empcursor)as
    BEGIN
      OPEN empList for select * from MEMBER  where MEMBER_ID=memberId;
    END queryEmpList;
  END mypackage;

 create package emp_pkg is
 procedure emp_update_ename(v_empno varchar2,v_ename varchar2);
 function emp_get_sal(v_empno varchar2) return number;
 end;

oracle 应用程序调用存储函数的更多相关文章

  1. Spring JDBC调用存储函数

    以下示例将演示spring jdbc如何调用存储函数.在这个示例中将通过调用存储函数来读取Student表中的一个可用记录信息.传递一个ID并获取学生的姓名. 语法: SimpleJdbcCall j ...

  2. oracle之存储过程和存储函数的使用和区别

    #存储过程:封装在服务器上一段sql片段,已经编译好了的代码. 1.客户端调存储过程,执行效率就会非常高效. 语法: create [or replace] procedure 存储过程名称 (参数名 ...

  3. oracle 的自定义的存储函数遇到的 package or function is in an invalid state

    转: oracle 的自定义的存储函数遇到的 package or function is in an invalid state 2017-10-28 11:08:17 major_tom 阅读数 ...

  4. oracle数据库中的存储函数

    oracle中的存储函数,和系统内的函数类似,可以像调用系统函数一样调用存储函数.它与存储过程的唯一区别就是存储过程没有return返回值,存储函数可以与存储过程互换,存储函数可以在存储过程中调用. ...

  5. linux下c程序调用reboot函数实现直接重启【转】

    转自:http://www.blog.chinaunix.net/uid-20564848-id-73878.html linux下c程序调用reboot函数实现直接重启 当然你也可以直接调用syst ...

  6. Oracle数据库---存储过程、存储函数

    --创建存储过程CREATE OR REPLACE PROCEDURE first_procISBEGIN DBMS_OUTPUT.PUT_LINE('我是过程'); DBMS_OUTPUT.PUT_ ...

  7. 编程开发之--Oracle数据库--存储过程和存储函数(2)

    上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数 1.在应用程序中调用我们的存储过程 创建一个简单的Ja ...

  8. 编程开发之--Oracle数据库--存储过程和存储函数(1)

    1.存储过程和存储函数 描述:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数 区别:存储函数可以通过return子句返回一个函数的值 (1)存储过程 语法:create [or re ...

  9. Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)

    PL/SQL子程序 它包含了函数和过程.此功能是指用户定义的函数.和系统功能是不同的.子程序通常完成特定的功能PL/SQL座.,能够被不同的应用程序多次调用.Oracle提供能够把PL/SQL程序存储 ...

随机推荐

  1. Maven之setting.xml 配置详解

    文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${use ...

  2. Python使用pip安装TensorFlow模块

    1.首先确保已经安装python,然后用pip来安装matplotlib模块. 2.进入到cmd窗口下,建议执行python -m pip install -U pip setuptools进行升级. ...

  3. 实验八 《Coderxiaoban团队》团队作业4:基于原型的团队项目需求调研与分析

    实验八 <Coderxiaoban团队>团队作业4:基于原型的团队项目需求调研与分析 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验八 团队作业4:基于 ...

  4. BZOJ1499: 瑰丽华尔兹(单调队列)

    pro: 给出一个n*m的地图,刚开始人在(x,y),每次给出一段区间(l,r,t),表示在时间[l,r]内,可以使人向4个方向(t)移动一格,或者不动.求最大可以移动多少格. sol: 考虑每一列( ...

  5. Spring源码窥探之:@Profile

    Spring为我们提供的多环境启动 1. 配置类,注入三个不同环境的数据源,并加上注解 /** * description: 以下准备了三套不同环境的数据源 * * @author 70KG * @d ...

  6. Linux中在vim/vi模式下对文本的查找和替换

    查找: 1.vim  filename  进入一般模式下 2.查找和替换方法 /word    向下查找word 的字符串  例如  /chengtingting   向下查找字符chengtingt ...

  7. GlusterFS Dispersed Volume(纠错卷)总结

    https://blog.csdn.net/daydayup_gzm/article/details/52748812 一.概念 Dispersed Volume是基于ErasureCodes(纠错码 ...

  8. C++中指针形参问题

    1.C++指针做形参,会有很多陷阱,很多时候也许并不如我们想的那样.比如我们想通过一个函数改变指针的值: #include<</SPAN>iostream> using nam ...

  9. 2019牛客多校第九场AThe power of Fibonacci——扩展BM

    题意 求斐波那契数列m次方的前n项和,模数为 $1e9$. 分析 线性递推乘线性递推仍是线性递推,所以上BM. 由于模数非质数,上扩展版的BM. 递推多少项呢?本地输入发现最大为与前57项有关(而且好 ...

  10. mysql udf提权

    参考文章:https://blog.csdn.net/q1352483315/article/details/98483668