为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle存储过程和自定义函数

难度初级
时长 1小时33分
学习人数
综合评分9.83
104人评价 查看评价
9.9 内容实用
9.9 简洁易懂
9.7 逻辑清晰
  • public class TestCursor{ @Test public void testCursor(){ //{call <procedure-name>{(<arg1>,<arg2>,...)}} String sql="{call MYPACKAGE.queryEmpList(?,?)}"; Connection conn=null; CallableStatement call=null, ResultSet rs=null; try{ conn=JDBCUtils.getConnection(); //获取数据库的连接 call=conn.prepareCall(aql); //创建statement call.setInt(1,10); //对于in参数,赋值,对于out参数,声明 call.registerOutParameter(2, OracleType.CURSOR);      call.execute(); rs=((OracleCallableStatement)call).getCursor(2);//取出gaibumenzhong所有员工的信息 while(rs.next()){//取出该员工的姓名、薪水和职位 int empno=rs.getInt("empno"); String name=rs.getString("ename"); double salary=rs.getDouble("sal"); String job=rs.getString("empjob"); System.out.println(empno+"\t"+name+"\t"+salary+"\t"+job); } }catch(Exception e){e.printStackTrace();}finally{JDBCUtils.release(conn,call,rs);} } }
    查看全部
  • 包头: CREATE OR REPLACE PACKAGE MYPACKAGE AS type empcursor is ref cursor; procedure queryEmpList(dno in number,empList out empcursor); END MYPACKAGE; 包体(需要实现包头中声明的所有方法,包括存储函数、存储方法): CREATE OR REPLACE PACKAGE BODY MYPACKAGE AS procedure queryEmpList(dno in number,empList out empcursor) AS BEGIN open empList for select * from emp where deptno=dno; END queryEmpList; END MYPACKAGE; -- 使用desc查看程序包的结构 desc MYPACKAGE
    查看全部
  • public class TestFunction{ /* create or replace function queryempincome(eno in number) return number */ @Test public void testFunction(){ //{?=call <procedure-name>[(<arg1>,<arg2>,...)]} String sql="{?=call queryempincome(?)}"; Connection conn=null; CallableStatement call=null; try{ // 得到数据库连接 conn=JDBCUtils.getConnection(); // 基于连接创建statement call=conn.prepareCall(sql); // 对于输入参数,需要赋值对于输出参数,需要申明 call.registerOutParameter(1, OracleTypes.NUMBER); call.setInt(2, 7839); // 执行调用 call.execute(); // 取出年收入的结果 double income=call.getDouble(1); System.out.println("该员工的年收入是:"+income); }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(conn,call,null); } } }
    查看全部
  • public void testProcedure(){ //{call <procedure-name>[(<arg1>,<arg2>,...)]} String sql="call queryempinform(?,?,?,?)"; Connection conn=null; CallableStatement call=null; try{ // 得到一个连接 conn=JDBCUtils.getConnection(); // 通过连接创建出statement call=conn.prepareCall(sql); // 对于in参数,需赋值,对于out参数,需要申明 call.setInt(1, 7839); // 设置第一个?为 7839 call.registerOutParameter(2, OracleTypes.VARCHAR); call.registerOutParameter(3, OracleTypes.NUMBER); call.registerOutParameter(4, OracleTypes.VARCHAR); // 执行调用 call.execute(); // 取出结果 String name=call.getString(2); double sal=call.getDouble(3); String job=call.getString(4); System.out.println(name+"\t"+sal+"\t"+job); }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtils.release(conn,call,null); } }
    查看全部
  • // 释放数据库的资源 public static void release(Connection conn,Statement st,ResultSet rs){ if(rs != null){try{ rs.close();}catch(SQLException e){e.printStackTrace();}finally{rs=null;}} if(st != null){try{st.close();}catch(SQLException e){e.printStackTrace();}finally{st=null;}} if(conn != null){try{conn.close();}catch(SQLException e){e.printStackTrace();}finally{conn=null;}} } }
    查看全部
    0 采集 收起 来源:概述

    2017-10-04

  • public class JDBCUtile{ private static String driver="orable.jdbc.OracleDriver"; private static String url="jdbc:oracle:thin:@192.168.56.101:1521:orcl"; private static String user="scott"; private static String password="tiger"; // 注册数据库的驱动 static{ try{ Class.forName(driver); // --> DriverManager.registerDriver(driver); }catch(ClassNotFoundException e){ throw new ExceptionInInitializerError(e); } } // 获取数据库连接 public static Connection getConnection(){ try{ return DriverManager.getConnection(url,user,password); }catch(SQLException e){e.printStackTrace(); } return null; }
    查看全部
    0 采集 收起 来源:概述

    2018-03-22

  • -- out参数:查询某个员工姓名、月薪和职位 -- 原则: 如果只有一个返回值,用存储函数;否则,就用存储过程。 create or replace procedure queryempinfor(eno in number,pename out varchar2, psal out number,pjob out varchar2) as begin -- 得到该员工的姓名、月薪和职位 select ename,sal,empjob into pename,psal,pjob from emp where empno=eno; end; /
    查看全部
    0 采集 收起 来源:[Oracle] out参数

    2017-10-04

  • -- 创建一个带参数的存储过程 -- 给指定的员工涨100块钱的工资,并且打印涨前后涨后的薪水 create or replace procedure raisesalary(eno in number) -- in 这是一个输入参数 as -- 定义一个变量保存涨前的薪水 psal emp.sal%type; begin -- 得到员工涨前的薪水 select sal into psal from emp where empno=eno; -- 给该员工涨100块钱 update emp set sal=sal+100 where empno=eno; -- 一般,这里不需要 commit ! 也不需要 rollback -- 注意:一般不在存储过程或者存储函数中,commit 和 rollback -- 打印 dbms_output.put_line('涨前:'||psal||',涨后:'||(psal+100)); end; / -- 调用: begin raisesalary(7839); raisesalary(7566); end; /
    查看全部
  • -- 第一个存储过程:打印Hello Word create or replace procedure sayhelloword as -- 说明部分,as一定要写 begin dbms_output.put_line('Hello World'); end; / set serveroutput on -- 调用存储过程 1. exec sayhelloworld(); 2. begin sayhelloworld(); sayhelloworld(); end; /
    查看全部
  • 创建存储过程 以HELLO WORLD为例 creat (or repalce) procedure sayhelloworld //创建过程名 as //as后为过程的说明部分,即为过程内操作语句 begin dbms_output.put_line('HELLO WORLD!'); end; //过程结束 调用时使用exec在声明部分调用
    查看全部
  • 不需要 execute immediate?
    查看全部
  • 不需要execute immediate?
    查看全部
  • in,out参数声明
    查看全部
  • 在java中访问oracle数据库包下的存储过程2
    查看全部
  • 在java中访问oracle数据库包下的存储过程1
    查看全部

举报

0/150
提交
取消
课程须知
小伙伴们,学习本门课程需要具备PL/SQL基础,可以移步《Oracle数据库开发必备利器之PL/SQL基础》课程。除此以外,在课程中涉及到存储过程和存储函数在Java项目中的应用,因此需要小伙伴们具备Java基础并熟悉JDBC。
老师告诉你能学到什么?
1、存储过程和存储函数的创建和调用 2、存储过程和存储函数在Java项目中的应用 3、如何在应用程序中访问包下的存储过程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!