PL/SQL编程

--打开输出流
set serveroutput on;

--定义一个过程
create or replace procedure scott_pro1(sname varchar2,sno number) is
--定义变量部分

begin
--执行部分
update myemp set empno=sno where ename=sname;
--结束
end;


--调用过程
exec scott_pro1('SMITH',6789);
call scott_pro1('SMITH',6788);



declare
--税率  :=赋值符号
c_tax_rate number(3,2) := 0.03;
--用户名
v_ename emp.ename%type;
--工资
v_sal number(7,2);
--所得税
v_tax_sal number(7,2);
begin
--执行部分
select ename,sal into v_ename,v_sal from emp where empno=&aa;
--计算所得税
v_tax_sal := v_sal * c_tax_rate;
dbms_output.put_line('用户名:'||v_ename||' 工资:'||v_sal||' 所得税:'||v_tax_sal);
end;


declare
--定义一个记录类型
type emp_record_type is record(name emp.ename%type,salary emp.sal%type,title emp.job%type);
--定义一个记录类型变量
v_record emp_record_type;
begin
select ename,sal,job into v_record from emp where empno=&aa;
dbms_output.put_line(v_record.name);
end;



declare
--定义一个游标类型
type scott_emp_cursor is ref cursor;
--定义一个游标变量
test_cursor scott_emp_cursor;
--定义变量
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
  --执行
  --把test_cursor和select结合起来
open test_cursor for select ename,sal from emp where deptno=&aa;
--循环取出
loop
  fetch test_cursor into v_ename,v_sal;
  --判断test_cursor是否为空
  exit when test_cursor%notfound;
  dbms_output.put_line(v_ename||' : '||v_sal);
  end loop;
end;


--控制语句语法
--1、循环loop,请看上个游标例子
--2、if ... then ... end if;
create or replace procedure fsl_pro1(fsl_name varchar2) is
v_sal emp.sal%type;
begin
  select sal into v_sal from emp where ename=fsl_name;
  if v_sal<2000 then
    update emp set sal=v_sal+v_sal*0.1 where ename=fsl_name;
    end if;
    end;

--3、if ... then ... else ... end if;
create or replace procedure fsl_pro2(fsl_name varchar2) is
v_comm emp.comm%type;
begin
  select nvl(comm,0) into v_comm from emp where ename=fsl_name;
  if v_comm<>0 then
    v_comm := v_comm+100;
    update emp set comm=v_comm where ename=fsl_name;
    else
     v_comm := v_comm+200;
     update emp set comm=v_comm where ename=fsl_name;
     end if;
    end;
   
--4、if ... then ... elsif .... then ... else ... end if;

--5、while ... loop ... end loop;





你可能感兴趣的:(PL/SQL编程)