oracle 控制语句

PL输出语句

set serverout on; -- 开启PL的输出语句功能
declare

n number:=1; -- 声明一个number型的变量n,并赋值为1
v varchar2(20):='world'; -- 声明一个varchar2类型的变量v 赋值为“world”
begin -- 控制语句书写在 begin      --     end 之间
dbms_output.put_line('hello'||n||v); -- 输出语句,数据连接使用‘||’
end;

if条件语句
set serverout on;
declare emp_count number;
begin
select count(*) into emp_count from emp where sal>=3000;
if emp_count>0 then
dbms_output.put_line('有'||emp_count||'个员工的基本薪资大于等于3000');
else
dbms_output.put_line('没有员工的基本薪资大于等于3000');
end if;
end;

赋值语句
set serverout on;
declare emp_count number;
begin
select count(*) into emp_count from emp where sal>=3000;  --  查询出数据并赋值给 emp_count
if emp_count=1 then
dbms_output.put_line('有1个员工的基本薪资大于等于3000');
else if emp_count>1 then
dbms_output.put_line('有超过1个员工的基本薪资大于等于3000');
else
dbms_output.put_line('没有员工的基本薪资大于等于3000');
end if;
end if;
end;

case when 流程控制语句

set serverout on;
declare emp_count number;
begin
select count(*) into emp_count from emp where sal>=3000;
case emp_count
when 0 then dbms_output.put_line('没有员工的基本薪资大于等于3000');
when 1 then dbms_output.put_line('有1个员工的基本薪资大于等于3000');
when 2 then dbms_output.put_line('有2个员工的基本薪资大于等于3000');
when 3 then dbms_output.put_line('有3个员工的基本薪资大于等于3000');
else dbms_output.put_line('超过3个员工的基本薪资大于等于3000');
end case;
end;

无条件循环 loop

set serverout on;
declare g_id number:=2;
g_losal number;
g_hisal number;
begin
loop
if(g_id>4) then
exit;
end if;

select losal,hisal into g_losal,g_hisal from salgrade where grade=g_id;
dbms_output.put_line(g_id || '等级的最低薪资'|| g_losal || ',最高薪资:' || g_hisal);

g_id:=g_id+1;

end loop;
end;

while 循环
set serverout on;
declare g_id number:=2;
g_losal number;
g_hisal number;
begin

while g_id<5 loop

select losal,hisal into g_losal,g_hisal from salgrade where grade=g_id;
dbms_output.put_line(g_id || '等级的最低薪资'|| g_losal || ',最高薪资:' || g_hisal);
g_id:=g_id+1;
end loop;

end;

for 循环
set serverout on;
declare g_losal number;
g_hisal number;
begin
for g_id in 2..4 loop
select losal,hisal into g_losal,g_hisal from salgrade where grade=g_id;
dbms_output.put_line(g_id || '等级的最低薪资'|| g_losal || ',最高薪资:' || g_hisal);
end loop;
end;

原文地址:https://www.cnblogs.com/getchen/p/8422988.html