oracle数据库的随堂笔记(三)-过程、函数、触发器

oracle数据库的随堂笔记(三)-过程、函数、触发器

1.过程
  过程用于执行特定的操作。当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)。通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。在sqlplus中可以使用create procedure命令来建立过程
  实例如下:
    1)请考虑编写一个过程,可以输入雇员名,新工资来修改雇员的工资
    2)调用过程的两种方法
    3)如何在java程序中调用一个存储过程
  案例1:
    create procedure xf_pro1(sfName varchar2,newSal number) is
    –这里可以定义变量
    begin
    –执行部分,根据用户名去修改工资
    update emp set sal=newSal where ename=xfName;
    end;
    /

  调用方法:
    exec 过程名(参数)
    call 过程名(参数)

  在java程序中调用存储过程

    TestOraclePro.java
    //演示java程序调用oracle的存储过程案例
    package com.xf;
    import java.sql.*;
    public class TestOraclePro{

    public static void main(String[] args){

      try{

        //1.加载驱动
        Class.forName(“oracle.jdbc.driver.OracleDriver”);
        //2.得到连接
        Connection ct=DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:MYORA1″,”scott”,”1234″);
        //3.创建CallableStatement
        CallableStatement cs=st.prepareCall(“{call xf_pro1{?,?}”);
        //4.给?赋值
        cs.setString(1,”SMITH”);
        sc.setInt(2,20);
        //5.执行
        cs.execute();
        //6.关闭
        cs.close();
        st.close();
      }catch(Exception e){

        e.printStackTrace();
      }
    }
   }

  ?如何使用过程返回值

2.函数
  函数用于返回特定的数据,当建立函数时,在函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据。我们可以使用create function来建立函数
  实例如下:
    –输入雇员的姓名,返回该雇员的年薪
    create function xf_fun1(xfName varchar2) return
    number is yearSal number;
    begin
    –执行部分
    select sal*12+nvl(comm,0) into yearSal from emp where ename=xfName;
    return yearSal;
    end;
    /

  在sqlplus中调用函数
    sql>var income number;
    sql>call xf_fun1(‘SCOTT’) into:income;
    sql>print income;
  在java程序中调用函数
    select xf_fun1(‘SCOTT’) from dual;
    通过rs.getInt(1)得到返回的结果

3.包
  包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。
    1)我们可以使用create package命令来创建包:
    实例:
      –创建一个包xf_package,声明了一个过程update_sal和一个函数annual_income
      create package xf_package is
      procedure update_sal(name varchar2,newsal number);
      function annual_income(name varchar2) return number;
      end;
  包的规范只包含了过程和函数的说明,但是没有过程和函数的实现代码。包体用于实现包规范中的过程和函数
    2)建立包体可以使用create package body命令
      –给包xf_package实现包体
      create package body xf_package is
      procedure update_sal(name varchar2,newsal number) is
      begin
      update emp set sal=newsal where ename=name;
      end;
      function annual_income(name varchar2) return
      number is annualSal number;
      begin
      select sal*12+nvl(comm,0) into annualSal from emp where ename=name;
      return annualSal;
      end;
      end;
  如何调用包的过程或函数
    当调用包的过程或函数时,在过程和函数前需要带有包名,如果要访问其它方案的包,还需要在包名前加方案名。
      例:sql>call xf_package.update_sal(‘SCOTT’,1500);
        或sql>exec xf_package.update_sal(‘SCOTT’,1500);

4.触发器
  触发器是指隐含的执行的存储过程。当定义触发器时,必须要制定触发的事件和触发后的操作,常用的触发事件包括insert,update,delete语句,而触发操作实际上就是一个pl/sql块。

  可以使用create trigger来建立触发器

转载于:https://www.cnblogs.com/fei-er-blog/p/4162965.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109624.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月2日 下午7:00
下一篇 2021年9月2日 下午8:00


相关推荐

  • 数据库拉链表详解_拉链表断链

    数据库拉链表详解_拉链表断链一、前言在上一节简单介绍了拉链表,本节主要讲解如何通过binlog采集MySQL的数据并且按月分区的方式实现拉链表。这里以上节介绍的用户表(user)举例二、涉及到的表1.原始表(user)原始表指的是MySQL中的表,表结构如下:其中name为主键,如果没有主键则无法做拉链表。2.binlog流水表(user_binlog)操作类型字段枚举值为:insert、update、delete。设…

    2022年10月17日
    5
  • Spring Boot热部署-Spring loaded

    Spring Boot热部署-Spring loaded

    2021年5月16日
    154
  • redis面试题目_Redis面试题

    redis面试题目_Redis面试题面试题:2018最全Redis面试题整理

    2022年4月21日
    66
  • 图像拼接步骤及算法

    图像拼接步骤及算法三种图像拼接方法 APAP 方法 SPHP 方法 PT 方法图像拼接步骤图像配准 图像对齐与光束法平以及图像后处理下面介绍图像拼接的有关算法 图像配准是图像拼接中的至关重要的一步 在图像配准中 特征提取与匹配是最关键的一个步骤 普通检测方法检测的高相应值的特征点通常分布于纹理明显的区域 在相对平滑的区域 特征点分布较为稀疏 特征提取特征提取主要分为 特征检测与特征描述经典局部特征提取方法 SIFTSURFORB 通过 FAST 检测器来检测特征点 以 BRIEF 描述方式来获取描述符向量 加入了方向信

    2026年3月18日
    2
  • 安装CLOVER引导器到硬盘EFI分区

    彻底脱离CLOVER引导U盘目录:1使用EFITOOLSClover安装CLOVER引导器到EFI分区。2使用Cloverv2.3krXXXX.pkg安装CLOVER引导器到EFI分区前言我们的电脑里已经安装好了双系统,但是之前都是通过启动CLOVER引导U盘进行引导双系统的。本章节内容,将简单的介绍将在MAC系统(=OSX系统)下将CLOVER引导器安装到硬盘EFI分区。…

    2022年4月7日
    181
  • 支付风控模型

    支付风控模型支付风控数据仓库建设 。支付风控涉及到多方面的内容,包括反洗钱、反欺诈、客户风险等级分类管理等。其中最核心的功能在于对实时交易进行风险评估,或者说是欺诈检测。如果这个交易的风险太高,则会执行拦截。由于反欺诈检测是在交易时实时进行的,在要求不能误拦截的同时,还有用户体验上的要求,即不能占用太多时间,一般要求风控操作必须控制在100ms以内,对于交易量大的业务,10ms甚至更低的性能要求都是必须的。

    2022年4月29日
    90

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号