pl sql 和if loop結構

--塊結構
declare
v_num number :=10 ; --聲明一個變量 := 賦值
v_name varchar2(10) :='偶發清';
v_second number :=#
begin
dbms_output.put_line('數字是'||v_num); --打印v_num變量 ||鏈接字符串
dbms_output.put_line(v_name);
dbms_output.put_line(v_second);
end;sql


--變量做用範圍
--變量聲明在哪裏declare裏面就對應在裏面能夠用
declare

v_num number :=10;
begin
declare
v_first number := 20;

begin
dbms_output.put_line(v_num);
dbms_output.put_line(v_first);
end;iphone


dbms_output.put_line(v_num||'aaaa');
end;oop


declare
v_num number := 10;
begin
dbms_output.put_line(v_num);
declare
v_num number :=20;
begin
dbms_output.put_line(v_num);
end;

dbms_output.put_line(v_num);
end;編碼

--變量數據類型
--標量數據類型varchar2 number date timestamp char
--屬性類型 %type %rowtypeip

--%type
declare
v_sal emp.sal%type; --自動匹配表中某個字段的數據類型字符串

begin
select sal into v_sal from emp where empno=7788;
dbms_output.put_line(v_sal);
end;it


--%rowtype 自動匹配一行數據
declare
v_emp emp%rowtype;io

begin
select * into v_emp from emp where empno=7788;
dbms_output.put_line(v_emp.sal||' '||v_emp.ename); --變量名 .字段 來訪問
end;for循環

 

--控制結構
--if 結構
declaretable

v_sal number :=8000;
begin
if v_sal>5000 then
dbms_output.put_line('工資還能夠');
end if;
end;

--if else
declare
v_sal number:=2000;
begin
if v_sal>3500 then
dbms_output.put_line('工資大於3500');
else
dbms_output.put_line('工資還有待提高!');
end if;
end;

 

--嵌套if
declare
v_score number := 70;
v_sex varchar2(10):='男';
begin
if v_score<60 then
dbms_output.put_line('不及格');

if v_sex = '女'then
dbms_output.put_line('罰抄10遍');
else
dbms_output.put_line('跑操場');
end if;
else
dbms_output.put_line('及格');
if v_sex ='女' then
dbms_output.put_line('獎勵iphone7');
else
dbms_output.put_line('喝酒去');
end if;
end if;
end;

--多重if
declare
v_score number := 90;
begin
if v_score>=90 then
dbms_output.put_line('優秀');
elsif v_score>=80 then
dbms_output.put_line('良好');
elsif v_score >=60 then
dbms_output.put_line('及格');
else
dbms_output.put_line('不及格');
end if;
end;

--case

declare
v_con constant varchar2(10) := '陳青山';--常量 值固定不變

v_grade varchar2(10) := '&請輸入等級';
begin
case v_grade

when 'A' then
dbms_output.put_line('A等級');
when 'B' then
dbms_output.put_line('B等級');
else
dbms_output.put_line('沒有這個等級');
end case;
end;

 

--打印1-100整數

--loop 基本循環
declare
v_i number :=1;
begin
loop
dbms_output.put_line(v_i);
v_i := v_i +1;
exit when v_i>100;
end loop;
end;

--while 循環
declare
v_i number :=1;
begin
while v_i<=100 loop
dbms_output.put_line(v_i);
v_i:=v_i+1;
end loop;
end;


--for 循環 偶數和
declare
v_i number;
v_sum number := 0;
begin
for v_i in reverse 1..100 loop
if mod(v_i,2) =0 then
dbms_output.put_line(v_i);
v_sum := v_sum+v_i;
end if;
end loop;
dbms_output.put_line(v_sum);
end;


--奇數和
declare
v_i number;
v_sum number := 0;
begin
for v_i in reverse 1..100 loop
if mod(v_i,2) !=0 then
dbms_output.put_line(v_i);
v_sum := v_sum+v_i;
end if;
end loop;
dbms_output.put_line(v_sum);
end;

--雙重for循環
declare

begin
for i in 1..9 loop
for j in 1..i loop
dbms_output.put(j||'*'||i||'='||(i*j)||' ');
end loop;
dbms_output.put_line('');
end loop;
end;


--等腰三角形
declare

begin
for i in 1..5 loop
--打印空格
for j in 1..5-i loop
dbms_output.put(' ');
end loop;
--打印*
for k in 1..2*i-1 loop
dbms_output.put('*');
end loop;

dbms_output.put_line('');
end loop;


for i in 1..4 loop
--打印空格
for j in 1..i loop
dbms_output.put(' ');
end loop;
--打印*
for k in 1..2*(5-i)-1 loop
dbms_output.put('*');
end loop;

dbms_output.put_line('');
end loop;
end;


create table tb_for(
id number primary key,
v_num number
)

create sequence seq_for ;

--循環添加
declare

begin
for i in 1..100 loop
insert into tb_for values(seq_for.nextval,i);
end loop;
commit;
end;

 

--順序控制
declare
v_emp emp%rowtype;

begin
select * into v_emp from emp where empno=&eno;
dbms_output.put_line(v_emp.ename||' '||v_emp.sal);
/* if v_emp.sal >2000 then
goto print;
dbms_output.put_line('aaaaa');
else
goto noprint;
end if;

<<print>>
dbms_output.put_line('要交稅');
<<noprint>>
null;*/

exception
when no_data_found then
-- dbms_output.put_line('員工不許確 ,請輸入正確員工編號');
dbms_output.put_line(sqlerrm);
end;

--自定義異常
declare
myerror exception ;--聲明一個自定義異常
pragma exception_init(myerror,-20003);--關聯錯誤編碼
begin
raise exception

end;

select * from tb_for;

相關文章
相關標籤/搜索