zoukankan      html  css  js  c++  java
  • 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来建立触发器

    宁可孤独,也不违心。宁可抱憾,也不将就。
  • 相关阅读:
    Struts2的常见的配置文件介绍
    第一个Struts2实例之hello world!
    Highcharts实现图形报表(我主要实现javaweb开发的图形报表)
    基于jsp+servlet图书管理系统之后台用户信息删除操作
    基于jsp+servlet图书管理系统之后台用户信息修改操作
    基于jsp+servlet图书管理系统之后台用户信息查询操作
    基于jsp+servlet图书管理系统之后台用户信息插入操作
    初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面
    Java中IO流,输入输出流概述与总结
    【转】Android 创建AVD各参数详解
  • 原文地址:https://www.cnblogs.com/fei-er-blog/p/4162965.html
Copyright © 2011-2022 走看看