2.plsql条件判断语句

文章介绍了PL/SQL中用于条件判断的两种主要语句结构:IF和CASEWHEN。IF语句包括单条件判断、带有ELSE分支的双条件判断以及多条件的IF-ELSIF-ELSE结构。CASEWHEN则包括简单CASE和搜索CASE,它们提供更灵活的条件匹配方式。示例代码展示了如何在PL/SQL块中使用这些语句进行条件分支控制。
摘要由CSDN通过智能技术生成
PL/SQL 条件判断语句分为两大类:
IF 和 CASE WHEN
  
--第一种 IF
1. IF CONDITION THEN --CONDITION是条件
   需要执行的语句
   END IF;
+++++++++++++++++
2. IF CONDITION THEN 
      执行语句1
   else 
      执行语句2
   end IF;
+++++++++++++++++++++++++
3. IF CONDITION1 THEN 
       执行语句1
   ELSIF CONDITION2 THEN 
       执行语句2
   ...
   else
       执行语句3
   END IF;
+++++++++++++++++++++++++++
--最后的 ELSE 为可选的,在IF结构内可以有任意多个ELSEIF, 如果ELSEIF 过多,可考虑使用支持搜索的CASE 语句。

简单CASE语句
支持搜索的CASE 语句
除了CASE语言外,还有实现条件分支的CASE表达式。

--简单CASE语句
--求值表达式expression 得到的结果一次和WHEN 中的result1, result2, …匹配,
--如果一致则执行对应的语句statements, 否则执行statements_else。
CASE EXPRESSION 
WHEN RESULT1 THEN 
    STATEMENTS1
WHEN RESULT2 THEN
    STATEMENTS2
...
ELSE 
    STATEMENTS3
END CASE;

ELSE 部分是可选的,如果没有ELSE ,同时没有任何WHEN成功匹配,则会抛出错误“CASE_NOT_FOUND”,
     同样的情况在IF里面则是简单的离开IF。
expression 可以除BLOB, BFILE和复合类型之外的任意类型。
+++++++++++++++++++++++++++++++++
--支持搜索的CASE 语句
--依次求值一系列表达式expression,当找到第一个求值为TRUE的表达式时,对应的语句statements被执行。
CASE WHEN EXPRESSION1 THEN
          STAEMENTS1
     WHEN EXPRESSION2 THEN
          STAEMENTS2
     ...
     ELSE 
          STATEMENTS3
END CASE;
--同样的,ELSE为可选部分,在没有匹配发生的时候,也是产生错误“CASE_NOT_FOUND”。
--CASE表达式
++++++++++++++++++++++++++++++++++;
DECLARE
v_a number:='&输入一个数';

begin 
  if v_a>10 then 
    dbms_output.put_line('废了');
   else
     dbms_output.put_line('还可以');
   end if;
end;
======
declare
nums number;
begin
  select count(*) into nums from emp;
  if nums>10 then
    dbms_output.put_line('大于十行');
    end if;
end;
========
declare
nums emp.sal%type :=&输入一个数;
begin 
  if nums>200 then
    dbms_output.put_line('sjald');
    elsif nums>100 then
    dbms_output.put_line('lllllllllllll');
    elsif nums>50 then
      dbms_output.put_line('mmmmmmmmm');
    else
      dbms_output.put_line('ppppppppppp');
   end if;
end;

=====================
declare
ename emp%rowtype;
begin
select ename into ename.ename from emp where rownum=1;
case when ename.ename='SMIT' then
  dbms_output.put_line(ename.ename);
     when ename.ename>'SAMMM' then
  dbms_output.put_line('不是'||ename.ename);
    else 
  dbms_output.put_line('啥也不是');
end case;
end;
  

DECLARE 
EMPS EMP%ROWTYPE;
BEGIN
  execute immediate 'SELECT DISTINCT DEPTNO FROM EMP where deptno=''30''' INTO EMPS.DEPTNO;
  --SELECT DISTINCT DEPTNO INTO EMPS.DEPTNO FROM EMP where deptno='30';
  CASE EMPS.DEPTNO WHEN '20' THEN
    dbms_output.put_line(EMPS.DEPTNO||'部门最优秀');
                   when '10' then
    dbms_output.put_line(emps.deptno||'部门最优秀');
  else 
        dbms_output.put_line('各部门都优秀');
  end case;
end;











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值