PL/SQL存储过程的基本使用

简单示例

create or replace procedure find_emp(p_eno number)
as 
  v_name varchar2(20);
begin
  select ename into v_name from emp where empno=p_eno;
  dbms_output.put_line(v_name);
exception
  when no_data_found then
  dbms_output.put_line('未发现数据');
end find_emp;

execute find_emp(7369);


没有return的返回一条纪录

create or replace procedure find_emp(p_eno in emp.empno%type,p_emp out emp%rowtype)
as 
begin
  select * into p_emp from emp where empno=p_eno;
exception
  when no_data_found then
  dbms_output.put_line('未发现数据');
end find_emp;

declare
p_emp  emp%rowtype;
begin
find_emp(7369,p_emp);
  dbms_output.put_line(p_emp.ename||' '||p_emp.sal);
end;


形参的传递方式(IN,OUT, IN OUT)

--交换两个数
--IN
----用于接受调用程序的值
----默认的参数模式
--OUT
----用于向调用程序返回值 
--IN OUT
----用于接受调用程序的值,并向调用程序返回更新的值


create or replace procedure swap_num(p_a in out number,p_b in out number )
is 
  v_num number;
begin
  v_num := p_a;
  p_a := p_b;
  p_b := v_num;
end swap_num;

declare
  v_a number :=3;
  v_b number :=6;
begin
  dbms_output.put_line(v_a||'  '||v_b);
  swap_num(v_a,v_b);
  dbms_output.put_line(v_a||'  '||v_b);
end;
 

DML操作

--往dept表插入一条纪录
create or replace procedure insert_dept(p_no in dept.deptno%type
  ,p_name in  dept.dname%type
  ,p_loc in dept.loc%type)
is
begin
  insert into dept values (p_no,p_name,p_loc);    
end insert_dept;

execute insert_dept(50,'developer','beijing');


你可能感兴趣的:(PL/SQL存储过程的基本使用)