使用jdbc调用存储,函数
public class JdbcTest {
private Connection conn = null;
private PreparedStatement pst = null;
private ResultSet rs = null;
@Before
public void init() throws Exception {
//加载数据库驱动
Class.forName(driver);
//获取Connection对象
conn = DriverManager.getConnection(url, username, password);
}
@After
public void close() throws Exception{
//释放资源
if(rs!=null)
rs.close();
if(pst!=null)
pst.close();
if(conn!=null)
conn.close();
}
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.197.10:1521:orcl";
String username = "scott";
String password = "tiger";
//查询oracle数据库中scott用户下emp表记录
@Test
public void findEmps() throws Exception {
//获取PreparedStatement
pst = conn.prepareStatement("select * from emp");
//执行sql
rs = pst.executeQuery();
//处理ResultSet
while(rs.next()){
System.out.println("编号:"+rs.getInt("empno")+",姓名:"+rs.getString("ename"));
}
}
/**
* @Description: 调用存储过程
*
* create or replace procedure pro_add_sal(eno in number,money in number)
*
*
* CallableStatement
* 用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用
*标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,
*则必须将其注册为 OUT 参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个
*参数的编号是 1。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用函数
{call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用过程
*/
@Test
public void callProcedure() throws Exception {
//加载数据库驱动
Class.forName(driver);
//获取Connection对象
Connection conn = DriverManager.getConnection(url, username, password);
//返回执行存储过程接口
CallableStatement cst = conn.prepareCall("{call pro_add_sal(?, ?)}");
//设置参数值
cst.setInt(1, 7369);
cst.setInt(2, 100);
//执行过程
cst.execute();
//释放资源
if(cst!=null)
cst.close();
if(conn!=null)
conn.close();
}
/**
* @Description: 调用存储过程有输出结果
*
* create or replace procedure pro_total_sal(eno in number, t out number)
*
* CallableStatement
* 用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用
*标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,
*则必须将其注册为 OUT 参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个
*参数的编号是 1。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用函数
{call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用过程
*/
@Test
public void callProcedureOutParmeter() throws Exception {
//加载数据库驱动
Class.forName(driver);
//获取Connection对象
Connection conn = DriverManager.getConnection(url, username, password);
//返回执行存储过程接口
CallableStatement cst = conn.prepareCall("{call pro_total_sal(?, ?)}");
//设置参数值
cst.setInt(1, 7369);
//注册为 OUT 参数 void registerOutParameter(int parameterIndex, int sqlType)
//按顺序位置 parameterIndex 将 OUT 参数注册为 JDBC 类型 sqlType。
cst.registerOutParameter(2, OracleTypes.NUMBER);
//执行过程
cst.execute();
//获取返回输出参数结果
System.out.println(cst.getObject(2));
//释放资源
if(cst!=null)
cst.close();
if(conn!=null)
conn.close();
}
/**
* @Description: 调用存储过程有输出参数是游标类型
*
* create procedure pro_emp_list(dno in number, emplist out sys_refcursor)
*
* CallableStatement
* 用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用
*标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,
*则必须将其注册为 OUT 参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个
*参数的编号是 1。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用函数
{call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用过程
*/
@Test
public void callProcedureOutParmeterCursor() throws Exception {
//加载数据库驱动
Class.forName(driver);
//获取Connection对象
Connection conn = DriverManager.getConnection(url, username, password);
//返回执行存储过程接口
CallableStatement cst = conn.prepareCall("{call pro_emp_list(?, ?)}");
//设置参数值
cst.setInt(1, 20);
//注册为 OUT 参数 void registerOutParameter(int parameterIndex, int sqlType)
//按顺序位置 parameterIndex 将 OUT 参数注册为 JDBC 类型 sqlType。
cst.registerOutParameter(2, OracleTypes.CURSOR);
//执行过程
cst.execute();
//获取返回输出参数结果
OracleCallableStatement ocs = (OracleCallableStatement) cst;
ResultSet rs = ocs.getCursor(2);
while(rs.next()){
System.out.println(rs.getString("ename"));
}
//释放资源
if(ocs!=null)
ocs.close();
if(cst!=null)
cst.close();
if(conn!=null)
conn.close();
}
/**
* @Description: 调用函数
*
* create or replace function fun_emp_toalsal(eno in number) return number
*
* CallableStatement
* 用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,则必须将其注册为 OUT 参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个参数的编号是 1。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用函数
{call <procedure-name>[(<arg1>,<arg2>, ...)]} --调用过程
*/
@Test
public void callFunction() throws Exception {
//加载数据库驱动
Class.forName(driver);
//获取Connection对象
Connection conn = DriverManager.getConnection(url, username, password);
//返回执行存储过程接口
CallableStatement cst = conn.prepareCall("{? = call fun_emp_toalsal(?)}");
//设置参数值
cst.setInt(2, 7369);
//注册为 OUT 参数 void registerOutParameter(int parameterIndex, int sqlType)
//按顺序位置 parameterIndex 将 OUT 参数注册为 JDBC 类型 sqlType。
cst.registerOutParameter(1, OracleTypes.NUMBER);
//执行过程
cst.execute();
//获取返回输出参数结果
System.out.println(cst.getObject(1));
//释放资源
if(cst!=null)
cst.close();
if(conn!=null)
conn.close();
}
}
使用jdbc调用存储,函数的更多相关文章
- Spring JDBC调用存储函数
以下示例将演示spring jdbc如何调用存储函数.在这个示例中将通过调用存储函数来读取Student表中的一个可用记录信息.传递一个ID并获取学生的姓名. 语法: SimpleJdbcCall j ...
- oracle 应用程序调用存储函数
package com.founder.ec.common.lucene; import java.sql.CallableStatement; import java.sql.Connection; ...
- 使用 JDBC 调用函数 & 存储过程
/** * 如何使用 JDBC 调用存储在数据库中的函数或存储过程 */ @Test public void testCallableStatment() { Connection connectio ...
- java程序调用存储过程和存储函数
java程序调用存储过程 jdbcUtil.java文件 package cn.itcast.oracle.utils; import java.sql.Connection; import java ...
- Java代码调用Oracle的存储过程,存储函数和包
Java代码调用存储过程和存储函数要使用CallableStatement接口 查看API文档: 上代码: java代码调用如下的存储过程和函数: 查询某个员工的姓名 月薪 职位 create or ...
- java调用Oracle中的存储过程与存储函数
1 //调用存储过程 2 public static void testPro(){ 3 String driver = "oracle.jdbc.OracleDriver"; 4 ...
- php中调用mysql的存储过程和存储函数
//$sql = 'call del()'; 调用存储过程 del(参数列表)//mysql_query($sql); $sql = "insert into t values (1, f ...
- day70-oracle 12-Java调用存储过程和存储函数
我们现在调用的是存储过程和存储函数.用CallableSatement调用存储函数和存储过程. RDBMS:关系数据库.使用标准方式调用存储过程.也就是说:在mysql中调用和在oracle中调用的写 ...
- MySQL 存储函数的创建、调用、查找
MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数 1.创建存储函数:使用 create function关键字 2.调用存储函数: 3.示例: ...
随机推荐
- Python3中文件处理
1.txt,xls,doc等文件的使用 f=open("filename","w") 打开一个用于写入的文件,要写入内容时使用f.write("内 ...
- JS将文件以form表单一样提交到后台
这是很简单.. HTML <div> <input type="file" id="myfile"> <input type=&q ...
- python编程快速上手之第3章实践项目参考答案
1 #!/usr/bin/env python 2 # coding:utf-8 3 # write by mfyang 4 # collatz.py 5 # 从用户读入一个值,并判断这个值是不是一个 ...
- 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
上篇博文中,我们介绍了做互联网级监控系统的必备-Influxdb的关键特性.数据读写.应用场景: 互联网级监控系统必备-时序数据库之Influxdb 本文中,我们介绍Influxdb数据库集群的搭建, ...
- Sql 2008R2 windows身份好用 ,sa身份不好用
Sql server2008r2 安装完毕以后 windows身份验证好用,sa身份不好用,解决方法步骤如下: 1.首先用windows身份登录 2.SQL实例右键属性 3.安全性这一项 4.选择wi ...
- spring基础系列--JavaConfig配置
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7171011.html 早以前,Spring推荐使用XML的方式来定义Bean及Bean之间 ...
- Luogu 1962 斐波那契数列(矩阵,递推)
Luogu 1962 斐波那契数列(矩阵,递推) Description 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1) = 1 f(2) = 1 f(n) = f(n-1) + f(n ...
- C# 调用.exe文件
process da = new process(); da.startinfo.filename = @""D:\BM0002\BM0002.exe"; //要调用的 ...
- redhat6.4配置yum
redhat6.4配置本地yum 1. 挂载(我喜欢放在/mnt下面) mount -t auto *** /mnt/redhat 或 cp *** /mnt/redhat ...
- 使用JDBC技术连接数据库(附源码)--JAVA的简单应用
一.创建数据库(以mysql数据库为例) mysql数据库的下载安装与配置 -可参考博主之前的随笔:Windows平台下搭建MySQL数据库 创建wxb数据库-create database wxb; ...