Java中调用Oracle中的存储过程的单元测试代码
Oracle中的存储过程:
/*
创建一个存储函数,返回指定员工的姓名,薪水和年收入
*/
create or replace function queryEmp2(eno in number, empname out VARCHAR2,empsal out NUMBER)
--返回年收入
return NUMBER
as
begin
select ename,sal into empname, empsal from emp where empno=eno;
--返回年收入
return empsal*12 + nvl(empsal,0);
end;
/
调用上面的存储过程的单元测试:
package demo;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
public class Demo {
@Test
public void testQueryEmpl() throws Exception {
//注册驱动
Class.forName("oracle.jdbc.OracleDriver");
//注意如果端口不是1521时,这时要给他改掉。
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
//默认使用的是orcale中的用户scott
String user = "scott";
//scott的用户名和密码是tiger
String password = "tiger";
//调用存储过程。
String sql = "{call queryEmpl2(?,?,?)}";
Connection conn = DriverManager.getConnection(url,user,password);
CallableStatement call = conn.prepareCall(sql);
//赋参数值
call.setInt(1, 7839);
//对于out参数
//下面的方法是告诉输出的数据的参数类型,即Oracle中的varchar类型。
call.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
call.registerOutParameter(3, oracle.jdbc.OracleTypes.NUMBER);
//执行
call.execute();
//取结果,获得名字和薪水
String name = call.getString(2);
double sal = call.getDouble(3);
System.out.println(name + " " + sal);
//关闭资源
call.close();
conn.close();
}
}
Java中调用Oracle中的存储过程的单元测试代码相关推荐
- 如何通过java程序调用oracle中的存储过程
一.编写一个存储过程,向student表中添加学生. 1.创建一个student表 create table student(stuId number,stuName varchar2(50),stu ...
- cmd 调用oracle存储过程,asp.net中调用oracle存储过程的方法
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果 ...
- 天马行空W:在C++中调用DLL中的函数
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- day12_oracle hint——SQL优化过程中常见Oracle中HINT的30个用法
在SQL语句优化过程中,经常会用到hint, 以下是在SQL优化过程中常见Oracle中"HINT"的30个用法 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方 ...
- 在C++中调用DLL中的函数
1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...
- 在form2中调用form1中的方法并改变form1中控件值的另一种方法
在窗体编程中,经常碰到到要在form2中调用form1中的方法并改变form1中控件值,但是又不能用new form1这种方法,因为这是生成一个实例. 网上有些说法是用委托和事件,笔者尝试没有成功,可 ...
- Java SpringMvc+hibernate架构中,调用Oracle中的sp,传递数组参数
一.问题 我们调用数据,大都是可以直接获取表中的数据,或者用复杂点的sql语句组成的.但是,有时候,当这样达不到我们要的全部数据的时候,这时,我们就用到了存储过程[sp],如果sp需要参数是数组的话, ...
- java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)
oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数. 下面是详细情况说明: 一:无返回值的存储过程调用 存储过程: creat ...
- mysql存储过程queue_mysql – 在Sequelize中调用输入/输出类型存储过程
我在 MySQL中创建了一个存储过程,它期望一些输入并返回一些输出. 要在MySQL中调用存储过程,我正在运行 CALL createCoupon(1236,321, @message); SELEC ...
最新文章
- 【数据结构与算法】之深入解析“验证IP地址”的求解思路与算法示例
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS
- [luogu P4198] 楼房重建(线段树 + 思维)
- python聊天软件实现_python实现点对点聊天程序
- 最大子序和(Leetcode第53题)
- 信息学奥赛一本通(2030:【例4.16】找素数)
- 官方晒荣耀20系列旗舰预告片:搭载业界最大F/1.4光圈
- 《计算机网络》第一章:基础知识Part II
- ARMLINUX学习笔记(二)
- http协议介绍及httpd特性详解
- Springboot连接不上mysql8_springboot连接mysql8.0问题解决
- Mysql设置允许外网访问
- unix系统中查看端口号被占用
- winrar的破解激活
- 计算机专业术语(个人学习总结,不定期更新)
- Xtrareport 多栏报表
- ffmpeg命令录制windows音视频
- Fire (poj 2152 树形dp)
- 一步一步用debugserver + lldb代替gdb进行动态调试(整理与补充)
- 7.volatile怎么通过内存屏障保证可见性和有序性?
热门文章
- JavaScript实现rabin-karp算法(附完整源码)
- OpenCASCADE:OCAF 使用
- wxWidgets:wxDirDialog类用法
- wxWidgets:wxDataViewTreeCtrl类用法
- wxWidgets:wxAny类用法
- wxWidgets:wxGrid概览
- boost::units::absolute相关的测试程序
- boost::mpl模块as_sequence的测试程序
- boost::mpl::aux::largest_int相关用法的测试程序
- boost::heap模块实现可变堆的测试程序