oracle plsql 基本語法
--plsql默認規則:plsql賦值用":=" plsql判斷用"=" plsql輸入用"&"
--輸入輸出
declare
v_str varchar2(20);
begin
-- Dbms_Output.put('hello');
-- Dbms_Output.put('xxxxxxxxxxxxxxxxxx');
-- Dbms_Output.put_line(''); put_line('')才會最終輸出,put只會在緩存中
v_str:='&str';
Dbms_Output.put_line(v_str);
end;
--plsql的判斷if句式
declare
v_age number:=0;
begin
v_age:='&age';
if(v_age<18) then
Dbms_Output.put_line('未成年');
elsif(v_age>18 and v_age<28) then
Dbms_Output.put_line('青年');
else
Dbms_Output.put_line('其他年齡');
end if;
end;
--plsql的判斷case句式
declare
v_empno scott.emp.empno%type;
v_sal scott.emp.sal%type;
begin
v_empno:='&empno';
select sal into v_sal from scott.emp where empno=v_empno;
case--case開始
when v_sal<1000 then
Dbms_Output.put_line('底層員工');
when v_sal>=1000 and v_sal <=2000 then
Dbms_Output.put_line('普通員工');
when v_sal>2000 and v_sal <=3000 then
Dbms_Output.put_line('中級骨干');
when v_sal>3000 then
Dbms_Output.put_line('管理層');
else --默認
Dbms_Output.put_line('未知級別');
end case;--case結束
end;
--練習 輸入職員編號 判斷該職業叫做king則輸出老板,叫做scott輸出作者,其他輸出普通員工
declare
v_empno scott.emp.empno%type;
v_ename scott.emp.ename%type;
begin
v_empno:='&empno';
select ename into v_ename from scott.emp where empno=v_empno;
case
when v_ename='KING' then
Dbms_Output.put_line('老板');
when v_ename='SCOTT' then
Dbms_Output.put_line('作者');
else
Dbms_Output.put_line('其他員工');
end case;
end;
select * from emp;
--簡化case句式 直接是一條sql查詢語句
select empno,
case ename
when 'KING' then '老板'
when 'SCOTT' then '作者'
else '普通職員'
end 身份
from emp;
--plsql 循環while句式:從1累加到100
declare
v_i number:=1;
v_sum number:=0;
begin
while(v_i<=100) loop
v_sum:=v_sum+v_i;
v_i:=v_i+1;
end loop;
Dbms_Output.put_line('累加結果為:'||v_sum);
end;
--plsql 循環do ... while句式:從1累加到100
declare
v_i number:=1;
v_sum number:=0;
begin
while(1=1) loop
v_sum:=v_sum+v_i;
v_i:=v_i+1;
exit when(v_i>100); --像java中的break
end loop;
Dbms_Output.put_line('累加結果為:'||v_sum);
end;
--plsql 循環for句式:從1累加到100
declare
v_i number:=1;
v_sum number:=0;
begin
for v_i in /*reverse*/ 1..100 loop
Dbms_Output.put_line('v_i:'||v_i);
v_sum:=v_sum+v_i;
end loop;
Dbms_Output.put_line('累加結果為:'||v_sum);
end;
--練習 使用while循環輸出* ,打印出如下圖形
declare
v_triLength number;
v_i number:=1;
v_j number:=1;
begin
v_triLength:='&邊長';
while( v_i<=v_triLength) loop
v_j:=1;
--打空格
while(v_j<=v_triLength-v_i) loop
Dbms_Output.put(' ');
v_j:=v_j+1;
end loop;
--打星星
v_j:=1;
while(v_j<=v_i) loop
Dbms_Output.put('*'||' ');
v_j:=v_j+1;
end loop;
Dbms_Output.put_line('');
v_i:=v_i+1;
end loop;
end;