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中的存储过程的单元测试代码相关推荐

  1. 如何通过java程序调用oracle中的存储过程

    一.编写一个存储过程,向student表中添加学生. 1.创建一个student表 create table student(stuId number,stuName varchar2(50),stu ...

  2. cmd 调用oracle存储过程,asp.net中调用oracle存储过程的方法

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果 ...

  3. 天马行空W:在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  4. day12_oracle hint——SQL优化过程中常见Oracle中HINT的30个用法

    在SQL语句优化过程中,经常会用到hint, 以下是在SQL优化过程中常见Oracle中"HINT"的30个用法 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方 ...

  5. 在C++中调用DLL中的函数

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  6. 在form2中调用form1中的方法并改变form1中控件值的另一种方法

    在窗体编程中,经常碰到到要在form2中调用form1中的方法并改变form1中控件值,但是又不能用new form1这种方法,因为这是生成一个实例. 网上有些说法是用委托和事件,笔者尝试没有成功,可 ...

  7. Java SpringMvc+hibernate架构中,调用Oracle中的sp,传递数组参数

    一.问题 我们调用数据,大都是可以直接获取表中的数据,或者用复杂点的sql语句组成的.但是,有时候,当这样达不到我们要的全部数据的时候,这时,我们就用到了存储过程[sp],如果sp需要参数是数组的话, ...

  8. java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)

    oracle中procedure是不能有返回值的,要想返回值,就得有输出参数,同样要想返回记录集,可以把游标类型作为输出参数. 下面是详细情况说明: 一:无返回值的存储过程调用 存储过程: creat ...

  9. mysql存储过程queue_mysql – 在Sequelize中调用输入/输出类型存储过程

    我在 MySQL中创建了一个存储过程,它期望一些输入并返回一些输出. 要在MySQL中调用存储过程,我正在运行 CALL createCoupon(1236,321, @message); SELEC ...

最新文章

  1. 【数据结构与算法】之深入解析“验证IP地址”的求解思路与算法示例
  2. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS
  3. [luogu P4198] 楼房重建(线段树 + 思维)
  4. python聊天软件实现_python实现点对点聊天程序
  5. 最大子序和(Leetcode第53题)
  6. 信息学奥赛一本通(2030:【例4.16】找素数)
  7. 官方晒荣耀20系列旗舰预告片:搭载业界最大F/1.4光圈
  8. 《计算机网络》第一章:基础知识Part II
  9. ARMLINUX学习笔记(二)
  10. http协议介绍及httpd特性详解
  11. Springboot连接不上mysql8_springboot连接mysql8.0问题解决
  12. Mysql设置允许外网访问
  13. unix系统中查看端口号被占用
  14. winrar的破解激活
  15. 计算机专业术语(个人学习总结,不定期更新)
  16. Xtrareport 多栏报表
  17. ffmpeg命令录制windows音视频
  18. Fire (poj 2152 树形dp)
  19. 一步一步用debugserver + lldb代替gdb进行动态调试(整理与补充)
  20. 7.volatile怎么通过内存屏障保证可见性和有序性?

热门文章

  1. JavaScript实现rabin-karp算法(附完整源码)
  2. OpenCASCADE:OCAF 使用
  3. wxWidgets:wxDirDialog类用法
  4. wxWidgets:wxDataViewTreeCtrl类用法
  5. wxWidgets:wxAny类用法
  6. wxWidgets:wxGrid概览
  7. boost::units::absolute相关的测试程序
  8. boost::mpl模块as_sequence的测试程序
  9. boost::mpl::aux::largest_int相关用法的测试程序
  10. boost::heap模块实现可变堆的测试程序