记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。


oracle 利用存储过程输入参数返回多行数据方法。


oracle 自带示例scott账号下,利用存储过程返回一行与多行数据方法。

1,利用存储过程返回一行数据,输入参数empno,返回ename与sal.

create or replace procedure p_emp_info(p_empno emp.empno%TYPE)
as
p_ename emp.ename%TYPE;
p_sal   emp.sal%TYPE;
p_count NUMBER;
begin
   select count(e.empno) into p_count from scott.emp e where e.empno=p_empno;
   if p_count=0 then
      return;
    end if;
    select ename,sal into p_ename,p_sal from emp e where e.empno=p_empno;
    DBMS_OUTPUT.put_line('部门号: '||p_empno||'.员工姓名:'||p_ename||'. 工资:'||p_sal);
end;
/

由于select into 每次只能输入一行数据,所以这个方法只能用于一行数据返回。

SQL> set serverout on
SQL> exec p_emp_info(7782);
部门号: 7782.员工姓名:CLARK. 工资:2450
PL/SQL procedure successfully completed


2,使用过程与游标,for in 循环,返回多行数据。

SQL> create or replace procedure get_emp_info(p_deptno emp.deptno%TYPE)

  2  as
  3  cursor c_empinf is select e.deptno,e.ename,e.sal from emp e where e.deptno=p_deptno;
  4  begin
  5   for i in c_empinf loop
  6  dbms_output.put_line('部门号:'||i.deptno||'.员工姓名:'||i.ename||'.工资'||i.sal);
  7  end loop;
  8  end;
  9  /
Procedure created

SQL> exec get_emp_info(10);
部门号:10.员工姓名:CLARK.工资2450
部门号:10.员工姓名:KING.工资5000
部门号:10.员工姓名:MILLER.工资1300
PL/SQL procedure successfully completed

SQL>





转载请标明出处【oracle 存储过程与游标返回出多行数据案例】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论