• [跟着hsp步步学习系统]oracle培训学习集锦全360度扫描(5)


    第三十四讲
    1.上次提出的no_data_found在update中将失效,因为手册中是只限select into
    当一定要用update table set时,可以加上select * w从而达到用select * into之效果。
    2.函数,
    其地位与sum(),max()是一样的。其语法是:
    create function 函数名(参数)
    return 返回数据类型 is
    定义变量
    begin
    end;
    快速入门:输入用户名,返回年薪
    create function f1(in_vename varchar2)
    return number is
    v_annual_sal number;
    begin
    select (sal+nvl(comm,0))*13 into v_annual_sal from emp where ename=in_vename;
    return v_annual_sal;
    end;
    --在控制台调用 select f1('SMITH');
    2.2 在java中调用方法
    String sql="select fun1('smith') from dual";
    调用dual是因为,函数中已注明调用哪个表
    3.包
    包只是用来声明过程或函数的
    此处包如同java的package
    语法:
    create package 包名 is
    声明函数
    function 函数名(参数)
    return 返回类型
    --声明过程
    procedure 过程名


    没有begin end,有点像java的接口。
    第三十五讲
    create or replace package myp1
    is
    procedure pro1 (v_in_ename varchar2,v_in_newsal number);
    function fun1(v_in_ename varchar2) return number;
    end;


    调用方法:
    myp1.即可调用 ,但此时未实现,只是声明 


    2.包体,是用来实现包的有is,end
    create or replace package body q包名is 
    procedure 过程名(变量名)
    ------
    快速入门包体
    create package body myp1 is
    procedure pro1(v_in_ename varchar2,v_in_newsal number) is
    begin
    update emp set sal=v_in_newsal where ename=v_in_ename;
    end;
    --实现函数
    funtion fun1(v_in_ename varchar) return number is
    begin
    select (sal+nvl(comm,0)*13 into v_annual_sal form emp where ename=v_in_ename);
    return v_annual_sal;


    调用时,要加方案名
    java中,String sql="{call scott.myp1.fun1()}";
    end;
    end;


    3.触发器
    4.讲pl/sql的语法,细讲
    赋值很奇怪:=
    v_sal number(6,2):=5.4;
    create procedure pro1(v_in_empno in number) is
    v_ename varchar(32);
    v_sal number;
    v_tax number
    begin
    select ename,sal into v_ename,v_tax from emp where empno=v_in_empno;
    --计算,个人所得税
    v_tax:=v_tax*t_tax_rate;
    dbms_output.put_line(v_ename||'工资是='||v_sal||'个人所得税是='||v_tax);
    end;

  • 相关阅读:
    Python——Sublime Text3编写Python的一些问题
    html/css/js----js中遇到的一些问题
    eclipse--常见问题
    前端如何实现拖拽效果(一)
    在vue中如何实现上传本地视频和图片预览
    关于NodeJS中mysql连接池卡死问题
    学习Mysql3——约束条件
    Vuex基础用法
    学习Mysql2--增删改查
    学习Mysql1——mysql安装和基本命令使用
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3002571.html
Copyright © 2020-2023  润新知