在java语言中调用存储函数

原创 2012年03月22日 20:28:16
连接oracle数据库
private static Connection conn;
	static{
		//第一步:加载驱动
			try {
				Class.forName("oracle.jdbc.driver.OracleDriver");
				//得到连接对象		conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","scott");
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
实例一:
【
create or replace function sumSal(emp_no number)--function(参数的值  必须有类型)
--返回值类型
return number--必须有返回值
as
--声明变量
emp_sal emp.sal%type;
emp_comm emp.comm%type;
total emp.sal%type;
begin
  select sal,comm into emp_sal,emp_comm from emp where empno=emp_no;
  total:=emp_sal*12+nvl(emp_comm,0);
  return total;--必须返回  返回值类型一定相同
end;
】
public static void functionTest1() throws SQLException{
		//mypackage 存储函数
		CallableStatement cas=conn.prepareCall("{?=call sumSal(?)}");
		//从1开始
		int index = 1;
		cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.NUMBER);
		//为占位符赋值
		cas.setInt(index++,7369);
		boolean flag=cas.execute();
		System.out.println(flag);
		System.out.println(cas.getInt(1));
	}
实例二:
【
通过包结构创建存储函数
create or replace package mypackage is
  type empc1 is ref cursor;
  function queryEmps return empc1;
end mypackage;
包体
create or replace package body mypackage is
function queryEmps return empc1 is
  emp_c1 empc1;
  begin
    open emp_c1 for select * from emp;
    return emp_c1;
  end;  
end mypackage;
】
	public static void functionTest2() throws SQLException{
		//mypackage 存储函数
		CallableStatement cas=conn.prepareCall("{?=call mypackage.queryEmps}");
		//从1开始
		int index = 1;
		cas.registerOutParameter(index++, oracle.jdbc.OracleTypes.CURSOR);
		
		boolean flag=cas.execute();
		System.out.println(flag);
		
		//调用里边的getCursor方法 返回的是ResultSet结果集
		ResultSet rs = ((OracleCallableStatement)cas).getCursor(1);
		
		while(rs.next()){
			System.out.println(rs.getInt(1));
		}
	}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在java语言中调用存储过程

首先一定要连接数据库啊 private static Connection conn; static{ //第一步:加载驱动 try { Class.forName("oracle...
  • w_l_j
  • w_l_j
  • 2012-03-22 20:27
  • 877

【存储过程】 在java语言中调用存储过程

首先一定要连接数据库啊 private static Connection conn; static{ //第一步:加载驱动 try {...

单链表的存储方式及实现(java语言描述)

顺序存储虽然是一种很有用途的存储结构,但也有很多局限性:      (1)若要为线性表扩充存储空间,则需重新创建一个地址连续的更大的存储空间,并把原有的数据元素都复制到新的存储空间中;      ...

自定义顺序存储结构线性表--java语言描述

自定义顺序存储结构线性表–java语言描述声明线性表接口public interface LinearList { public int size(); public boolean a...

黑马程序员----Java语言基础2(语句、函数、数组)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-程序流程控制 判断结构 、选择结构、循环结构判断结构 if语句 三种格式: 1、if(条件表达式)...

Java语言基础(二)---程序流程控制语句、函数

Java语言基础组成:关键字、标识符、注释、常量和变量、运算符、语句、函数、数组 一. 程序流程控制语句1. 顺序结构:简单的语句都是顺序结构的。2. 判断结构: 【...
  • yecjl
  • yecjl
  • 2015-04-10 20:57
  • 859

Java语言到底有没有虚函数?

前几天面试京东的时候,被问到c++与java函数的区别。其中有一条是,java中有没有虚函数?本文将从虚函数的定义及java字节码层面上告诉你答案。 定义:在某基类中声明为 virtual 并在一...

java语言基础笔记——语句,函数

java语言基础笔记 语句 判断结构(重点) 三种格式: 第一种:if(条件表达式){   执行语句;        }   System.out.println();   举例:   ...

数组常用函数归纳整理-java语言编写

在ArrayFunction类中定义了常用的数组方法 public class ArrayFunction { public ArrayFunction() { } public static voi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)