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;
2.plsql条件判断语句
最新推荐文章于 2023-09-23 00:18:09 发布
文章介绍了PL/SQL中用于条件判断的两种主要语句结构:IF和CASEWHEN。IF语句包括单条件判断、带有ELSE分支的双条件判断以及多条件的IF-ELSIF-ELSE结构。CASEWHEN则包括简单CASE和搜索CASE,它们提供更灵活的条件匹配方式。示例代码展示了如何在PL/SQL块中使用这些语句进行条件分支控制。
摘要由CSDN通过智能技术生成