oracle 存储过程与游标返回出多行数据案例
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 as3 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>
目录 返回
首页