• PL/SQL常用表达式及举例(一)


    IF 判断条件 THEN 满足条件时执行语句 END IF;

    DECLARE

    v_countResult NUMBER;

    BEGIN

    SELECT COUNT(empno) INTO v_countResult FROM emp;

    IF v_countResult>10 THEN

    DBMS_OUTPUT.put_line(v_countResult);

    END if;

    END;

    /

    IF 判断条件 THEN 满足条件时执行语句 ELSE 不满足条件时执行的语句 END IF;

    DECLARE

    v_countResult NUMBER;

    BEGIN

    SELECT COUNT(deptno) INTO v_countResult FROM dept;

    IF v_countResult>10 THEN

    DBMS_OUTPUT.put_line('DEPT>10');

    ELSE

    DBMS_OUTPUT.put_line('DEPT<10');

    END IF;

    END;

    /

    IF 判断条件1 THEN 满足条件1时执行的语句 ELSE IF 满足条件2时执行的语句ELSE所有条件都不满足时执行的语句 END IF;

    DECLARE

    v_countResult NUMBER;

    BEGIN

    SELECT COUNT(deptno) INTO v_countResult FROM dept;

    IF v_countResult>10 THEN

    DBMS_OUTPUT.put_line('DEPT>10');

    ELSIF v_countResult<10 THEN

    DBMS_OUTPUT.put_line('DEPT<10');

    ELSE

    DBMS_OUTPUT.put_line('DEPT=10');

    END IF;

    END;

    /

    查询EMP表的工资,输入员工编号,根据编号查询工资,如果工资高于3000元,则显示高工资,如果工资大于2000元,则显示中等工资,如果工资小于2000元,则显示低工资。

    DECLARE

    v_eno NUMBER;

    v_sal NUMBER;

    v_ename emp.ename%TYPE;

    BEGIN

    v_eno:=&empno;

    SELECT ENAME,SAL INTO v_ename,v_sal from emp where empno=v_eno;

    IF v_sal >3000 THEN

    DBMS_OUTPUT.put_line(v_ename||' High salary');

    ELSIF v_sal>2000 THEN

    DBMS_OUTPUT.put_line(v_ename||' medium salary');

    ELSE

    DBMS_OUTPUT.put_line(v_ename||' low salary');

    END IF;

    END;

    /

    查询员工年薪

    DECLARE

    v_eno NUMBER;

    v_sal emp.sal%TYPE;

    v_ename emp.ename%TYPE;

    BEGIN

    v_eno:=&empno;

    SELECT ENAME,SAL INTO v_ename,v_sal from emp where empno=v_eno;

    DBMS_OUTPUT.put_line(v_ename||'''s annual salary is '||12*v_sal);

    END;

    /

    用户输入一个雇员编号,根据它所在的部门给上涨工资,规则:10部门上涨10%,20上涨20%,30上涨30%,但是要求最高不能超过5000,超过5000就停留在5000.

    我的写法

    DECLARE

    v_eno emp.empno%TYPE;

    v_ename emp.ename%TYPE;

    v_sal emp.sal%TYPE;

    v_deptno emp.deptno%TYPE;

    BEGIN

    v_eno:=&empno;

    SELECT DEPTNO,ENAME,SAL INTO v_deptno,v_ename,v_sal FROM EMP WHERE EMPNO=v_eno;

    IF v_deptno=10 and 1.1*v_sal<5000 THEN

    DBMS_OUTPUT.put_line(v_ename||','||1.1*v_sal);

    ELSIF v_deptno=20 and 1.2*v_sal<5000 THEN

    DBMS_OUTPUT.put_line(v_ename||','||1.2*v_sal);

    ELSIF v_deptno=30 and 1.3*v_sal<5000 THEN

    DBMS_OUTPUT.put_line(v_ename||','||1.3*v_sal);

    ELSE

    DBMS_OUTPUT.put_line(v_ename||'5000');

    END IF;

    END;

    写法2:

    Declare

    v_empsal emp.sal%TYPE;

    v_dno emp.deptno%TYPE;

    v_eno emp.empno%TYPE;

    BEGIN

    v_eno:=&empno;

    Select deptno,sal into v_dno,v_empsal from emp where empno=v_eno;

    If v_dno=10 then

    If v_empsal*1.1>5000 then

    Update emp set sal=5000 where empno=v_eno;

    Else

    Update emp set sal=sal*1.1 where empno=v_eno;

    End if;

    elsIf v_dno=20 then

    If v_empsal*1.2>5000 then

    Update emp set sal=5000 where empno=v_eno;

    Else

    Update emp set sal=sal*1.2 where empno=v_eno;

    End if;

    elsIf v_dno=30 then

    If v_empsal*1.3>5000 then

    Update emp set sal=5000 where empno=v_eno;

    Else

    Update emp set sal=sal*1.3 where empno=v_eno;

    End if;

    Else

    Null;

    End if;

    End;

    /

    使用CASE进行多条件判断

    declare

    v_sal emp.sal%TYPE;

    v_job emp.job%TYPE;

    v_eno emp.empno%TYPE;

    BEGIN

    v_eno:=&empno;

    SELECT SAL,JOB INTO v_sal,v_job from emp where empno=v_eno;

    case

    when v_job='CLERK' then

    dbms_output.put_line(v_job||','||1.05*v_sal);

    when v_job='SALESMAN' then

    dbms_output.put_line(v_job||','||1.08*v_sal);

    when v_job='MANAGER' then

    dbms_output.put_line(v_job||','||1.10*v_sal);

    when v_job='ANALYST' then

    dbms_output.put_line(v_job||','||1.20*v_sal);

    when v_job='PRESIDENT' then

    dbms_output.put_line(v_job||','||v_sal);

    else

    null;

    end case;

    end;

    /

  • 相关阅读:
    基于C++CJAVA的python入门
    雁栖湖健身计划
    显存的一些知识
    Cuda_bank-conflict
    翻译文章进展
    一些CV界的好资源
    how processor caches work
    LINQ-进阶的扩展方法
    LINQ-基础
    CTFHUB-技能树 基础知识 ctf练习平台
  • 原文地址:https://www.cnblogs.com/kawashibara/p/8995440.html
Copyright © 2020-2023  润新知