在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语言中调用存储过程、存储函数、包头、包体

需要拷贝连接Oracle的jar包,路径如下图所示: 连接Oracle数据库的代码: package demo.utils; import java.sql.Connection; ...

Atiitt 使用java语言编写sql函数或存储过程

Atiitt 使用java语言编写sql函数或存储过程   1.1. java编写sql函数或存储过程的机制 1 1.2. Java编写sp的优点 1 1.3. 支持java源码,class文...
  • attilax
  • attilax
  • 2017年04月07日 22:01
  • 411

在java语言中调用存储过程

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

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

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

三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)

三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
  • wxisme
  • wxisme
  • 2014年10月12日 20:59
  • 1092

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

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

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

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

队列的链式存储方式的实现(Java语言描述)

链栈的结构示意图:
  • wxisme
  • wxisme
  • 2014年10月14日 19:44
  • 448

黑马程序员—Java语言基础(Function函数)

------- android培训、java培训、期待与您交流! ----------
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在java语言中调用存储函数
举报原因:
原因补充:

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