PL/SQL 上机练习(二)

函数:
1.

函数查看字符串中共包含几个某特殊字符,如‘A**B*CEDF‘中包含几个‘*’

2.
函数把员工表中不同的工作连接成一个字符串

3.
函数计算个人所得税,工资,薪金所得减3500,
含税级距 税率(%) 速除数
不超过1500 3 0
超过1500到4500 10 105
超过4500 到9000 20 555
超过9000 到35000 25 1005

--1
create or replace function special_char
    (c  in varchar2,v in varchar2)
    return  number
is
    s_num  number;
begin

     s_num:=length(c)-length(replace(c,v,‘‘));
    return(s_num);
end;  

declare
num number;
begin
num := special_char(‘AA****AA‘,‘*‘);
dbms_output.put_line(num);
end;

--2
create or replace function all_work
return varchar2
 is
  wname varchar2(100) ;
begin

  select wm_concat(job)
  into wname
  from (select distinct job from emp);
  return(wname);
end all_work;

declare
wname varchar(100);
begin
wname:=all_work();
dbms_output.put_line(wname);
end;

--3
create or replace function tax(p_empno in emp.empno%type)
return  number is
  t number ;
begin
  select sal+nvl(comm,0)-3500
  into t
  from emp
  where empno = p_empno;
  if t<0 then
  t:=0;
  ELSIF t<1500 THEN
  t:=t*0.03;
  ELSIF t<4500 THEN
  t:=t*0.1-105;
  ELSIF t<9000 THEN
  t:=t*0.2-555;
  ELSIF t<35000 THEN
  t:=t*0.25-1005;
  end if;
  return(t);
end tax;

declare
t number;
begin
t:=tax(7839);
dbms_output.put_line(t);
end;

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/zhaoGavin/p/8870007.html

时间: 2024-10-17 13:50:56

PL/SQL 上机练习(二)的相关文章

PL/SQL 编程(二)游标、存储过程、函数

游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段. 可以将游标形象的看成一个变动的光标,他实质上是一个指针,在一段Oracle存放数据查询结果集或者数据操作结果集的内存中,这个指针可以指向结果集任何一条记录. 游标分静态游标和REF游标两类,静态游标包含显式游标和隐式游标. 显式游标: 在使用之前必须有明确的游标声明和定义,这样的游标定义会关联数据查询语句,通常会返回一行或多行.打开游标后,用户可以利用游

(韩顺平讲解)pl/sql编程(二)

一.pl/sql进阶-控制结构 pl/sql中提供了三种条件分支语句 if -- then, if --then---else, if---then---elsif---else (1)简单的条件判断 if – then 问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%. Sql代码 1. create or replace procedure sp_pro6(spName varchar2) is 2. --定义 3. v_sal emp.sal%

PL/SQL 编程(二)

前面第一篇众中讲述了Java程序调用存储过程,这里再加以补充. 存储过程可能无返回值.有返回值(非列表).返回结果集等几种情况,下面一一举例: --建表 drop table book; create table book( bookId number(10) primary key, bookName varchar2(50), publishHouse varchar2(50), bookClass number(3) not null); /* 案例  实例16-向表book中添加书籍,并

PL/SQL控制语句(二、循环控制语句)

循环允许重复执行代码直到循环条件匹配,PL/SQL中循环主要有LOOP语句和EXIT语句两种,这两种语句相辅相成,一起组成了PL/SQL的循环结构.在PL/SQL中,循环分为四大类,本文将会讲解其中的3类,最后一类游标FOR循环将在游标篇进行介绍,PL/SQL中常见的3类循环分别如下: 简单的LOOP循环:这是最基本的循环种类,包含LOOP-END  LOOP语句和一些EXIT退出语句. 数字式FOR循环:这种循环结构允许指定循环要执行的次数,当指定的次数满足时才退出循环. WHILE循环:仅当

PL/SQL上机作业

Declare i number; j number; mark number; cout number:=0; Begin for i in 1..1000 Loop mark :=0; for j in 2..i/2 Loop if (i mod j = 0 )Then mark:=1; exit; end if; end Loop; if (mark = 0) Then cout:=cout+1; dbms_output.put(i||','); if mod(cout,5)=0 Then

Oracle 中的PL/SQL、存储过程、触发器、函数、包(学习笔记)

   一.PL/SQL是什么? PL/SQL(procedural language/SQL)是oracle在sql上的扩展,pl/sql不仅允许嵌入sql语言,而且可以定义常量和变量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这使得它的功能十分强大.但是移植性不好. 1. 实例1 只包括执行部分的PL/SQL块 set serveroutput on; begin dbms_output.put_line('asdasdasdas'); end; / set serverout 选

[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]

ORACLE PL/SQL编程之八(二): 把触发器说透

例2:创建DML语句行级触发器.当对emp表执行INSERT, UPDATE, DELETE 操作时,它自动更新dept_summary 表中的数据.由于在PL/SQL块中不能直接调用DDL语句,所以,利用ORACLE内置包DBMS_UTILITY中的EXEC_DDL_STATEMENT过程,由它执行DDL语句创建触发器. BEGIN  DBMS_OUTPUT.PUT_LINE('插入前');  Disp_dept_summary();  DBMS_UTILITY.EXEC_DDL_STATEM

PL/SQL 编程(二)

1    For循环 语法:begin for i in reverse 1..10 loop insert into users values(i,'奥巴马'): end loop: end; 注意:循环变量 i 是隐含增加的,所以无法看到 2    goto语句 goto 语句用于跳转到特定的位置去执行语句.由于goto语句会减少程序的可读性,所以一般情况下 不建议使用goto语句 3    null语句 null语句不会执行任何操作,但是可以增加程序的可读性 4    创建返回值是一个结果