PL/SQL判断

目录

2. -- 条件判断IF ELSE 

3. -- 判断的嵌套


1. -- 设计一个程序,手动输入一个员工工号,判断员工的月薪收入
-- 低于 1000 ,就输出中产
-- 1000~ 3000 ,就输出某某员工是高收入人群
-- 高于 3000就输出,某某员工是顶级收入人群

DECLARE 
-- 定义 员工编号变量 
V_NO EMP.EMPNO%TYPE;
-- 定义 输出语句变量
V_TEXT VARCHAR2(30);

BEGIN
-- 输入员工工号 
V_NO:=&输入员工号;

-- SQL 语句 CASE WHEN 判断 各个收入阶层,输出对应的需求
SELECT
CASE WHEN E.SAL+nvl(e.comm,0) <1000 THEN '中产'
     WHEN E.SAL+NVL(E.COMM,0) BETWEEN 1000 AND 3000 THEN '高收入人群'
      ELSE '顶级收入人群' END 
INTO 
V_TEXT
FROM EMP E
WHERE E.EMPNO=V_NO;
-- 输出结果
DBMS_OUTPUT.put_line(V_NO || V_TEXT);

END;
2. -- 条件判断IF ELSE 
IF 条件1 THEN 
  执行的逻辑1;
 ELSIF 条件2 
   THEN
  执行的逻辑2;
 .....
 
 ELSE 
   执行的逻辑N
   END IF;

案例-- 手动输入姓名和工资,输出姓名和工资,并判断出他是什么收入人群
-- 低于 1000 ,就输出中产
-- 1000~ 3000 ,就输出某某员工是高收入人群
-- 高于 3000就输出,某某员工是顶级收入人群

DECLARE 
V_NAME VARCHAR2(20):='&请输入姓名';
V_SAL NUMBER:=&请输入工资;
BEGIN
-- 逻辑判断
IF V_SAL <1000 THEN 
  DBMS_OUTPUT.put_line(V_NAME ||'中产');
  ELSIF V_SAL BETWEEN 1000 AND 3000 THEN
  DBMS_OUTPUT.put_line(V_NAME||'高收入人群') ;
  ELSE
  DBMS_OUTPUT.put_line(V_NAME||'顶级收入人群');
  END IF;     
END; 
3. -- 判断的嵌套

-- 根据输入的员工编号,判断这个人的岗位,然后再判断这个人是哪个部门的.

DECLARE 
-- 先定义变量
V_NO NUMBER:=&V_NO;
V_JOB VARCHAR2(10);
V_DEPTNO NUMBER;
BEGIN

SELECT
E.JOB,E.DEPTNO
INTO 
V_JOB,V_DEPTNO
FROM EMP E  
WHERE E.EMPNO=V_NO;

-- 判断 
IF V_JOB = 'MANAGER' THEN
  -- 外层判断1
  DBMS_OUTPUT.put_line('这个人是管理岗位!');
  IF V_DEPTNO=10 THEN 
  DBMS_OUTPUT.put_line('这个人是10部门!');
  ELSIF V_DEPTNO=20 THEN
  DBMS_OUTPUT.put_line('这个人是20部门!');
  ELSIF V_DEPTNO=30 THEN
  DBMS_OUTPUT.put_line('这个人是30部门!');
  ELSE 
  DBMS_OUTPUT.put_line('这个人是40部门!');
  END IF ;-- 里层判断1结束
   
  ELSE 
    --外层判断2 
      DBMS_OUTPUT.put_line('打工人!!!');
  IF V_DEPTNO=10 THEN 
  DBMS_OUTPUT.put_line('这个人是10部门!');
  ELSIF V_DEPTNO=20 THEN
  DBMS_OUTPUT.put_line('这个人是20部门!');
  ELSIF V_DEPTNO=30 THEN
  DBMS_OUTPUT.put_line('这个人是30部门!');
  ELSE 
  DBMS_OUTPUT.put_line('这个人是40部门!');
  END IF ;-- 里层判断1结束 
END IF;
END;

你可能感兴趣的:(sql,数据库)