PL/SQL基础

--最简单的PL/SQL块
begin
  DBMS_OUTPUT.PUT_LINE('hello world');
end;


--从控制台输入变量
declare
  v_name varchar2(64);
  v_age number(3);
begin
   v_name :='&请输入字符串';
   v_age :=&请输入年龄;
  DBMS_OUTPUT.PUT_LINE(v_name ||' '|| v_age);
end;

--常量的使用
declare 
 c_pi constant number(3,2):=3.14; 
begin
  DBMS_OUTPUT.PUT_LINE(c_pi);
end;

--采用sql语句给变量赋值
declare
  v_name emp.ename%type;
  v_sal emp.sal%type;
begin
  select ename ,sal into v_name ,v_sal from emp where EMPNO=7369;
  dbms_output.put_line(v_name||' '||v_sal);
end;

--采用rowtype属性类型
declare
  v_emp emp%rowtype;
begin
  select * into v_emp from emp where empno=7369;
  DBMS_OUTPUT.PUT_LINE(v_emp.ename);
end;

--条件控制结构(if then elsif else end if)
declare 
  v_age number;
begin
  v_age:=&请输入年龄;
  if v_age<18 then
    dbms_output.put_line('未成年');
  elsif v_age<35 then --不是else if 而是elsif
    dbms_output.put_line('成年人');
  elsif v_age<45 then
    dbms_output.put_line('中年人');
  else
     dbms_output.put_line('老年人');
  end if;
end;

--条件控制结构(case when then  else end case)
declare 
v_score number;
begin
  v_score:=&请输入分数;
  case floor(v_score/10)
    when 9 then dbms_output.put_line('优异');
    when 8 then dbms_output.put_line('良好');
    when 7 then dbms_output.put_line('一般');
    when 6 then dbms_output.put_line('及格');
    else  dbms_output.put_line('不及格');
  end case;  
end;

declare 
v_score number;
begin
  v_score:=&请输入分数;
  case 
    when v_score>=90 then dbms_output.put_line('优异');
    when v_score>=80 then dbms_output.put_line('良好');
    when v_score>=70 then dbms_output.put_line('一般');
    when v_score>=60 then dbms_output.put_line('及格');
    else  dbms_output.put_line('不及格');
  end case;  
end;

--循环控制结构(loop exit when)
--打印1-50的数
declare 
  i number ;
begin
  i :=1;
  loop
    dbms_output.put_line(i);
    i:=i+1;
    exit when i>50;
  end loop;
end;

--循环控制结构(while loop    end loop)
declare 
  i number ;
begin
  i :=1;
  while i<51 loop
    dbms_output.put_line(i);
    i:=i+1;
  end loop;
end;

--循环控制结构(for   in)
declare 
  i number ;
begin
  for i in 1..50 loop
    dbms_output.put_line(i);
  end loop;
end;

你可能感兴趣的:(plsql)