请举一个pl/sql函数返回多值的例子,易懂的,谢谢
解决方案 »
- imp dmp文件出错,有乱码
- 现在学习oracle,大神们给俺说说哪一方面比较重要呀?
- oracle导出数据结构
- =======数据库导入问题=======(在线等)
- DROP index 出错。
- 怎样在oracle 9i的管理器中设置回滚段的大小???
- jsp中如何调用数据库中的存储过程及函数?
- 请问 sql plus 中的set wrap off 和set linesize 100是什么意思??
- [求助]关于oracle数据迁移、合并的问题
- oracle forms 11g 运行错误
- oracle中实现数字自增长
- 请问下 如何把SELECT * FROM T_STUDENT 的结果集插入到COLB字段?
create or replace type emp_type as object(
empno number(4),
ename varchar2(10),
sal number(7,2),
deptno number(2));(2)对类型进行说明 OBJECT是Table类型
CREATE OR REPLACE TYPE emp_table AS TABLE OF emp_Type;(3)返回创建函数
create or replace function emp_test(p_deptno in emp.deptno%type)
return emp_table pipelined as
v_emp_rows emp_type;
begin
for myrow in (select empno,ename,sal,deptno from emp where deptno=p_deptno) loop
v_emp_rows := emp_type(myrow.empno,myrow.ename,myrow.sal,myrow.deptno);
pipe row (v_emp_rows);
end loop;
return;
end;
调用
select * from table(emp_test(10));
select * from table(emp_test(20));
select * from table(emp_test(30));
(1) 创建types 结构定义为OBJECT
(2)对类型进行说明 OBJECT是Table类型
(3)返回创建函数
三步的代码都写在pl/sql里的一个SQL Window里吗?
可以在一个包体里面的,包体里面可以定义type变量,也可以定义function函数。
(1) 创建types 结构定义为OBJECT
create or replace type emp_type is object(
empno number(4),
ename varchar2(10),
sal number(7,2),
deptno number(2));(2)对类型进行说明 OBJECT是Table类型
CREATE OR REPLACE TYPE emp_table is TABLE OF emp_Type;
#######需要在定义全局Type --endcreate or replace my_pkg is
type refcursor is ref cursor;function emp_test(p_deptno in emp.deptno%type)
return emp_table pipelined is
v_emp_rows emp_type;
begin
for myrow in (select empno,ename,sal,deptno from emp where deptno=p_deptno) loop
v_emp_rows := emp_type(myrow.empno,myrow.ename,myrow.sal,myrow.deptno);
pipe row (v_emp_rows);
end loop;
return;
end;function get_result(p_deptno in emp.deptno%type) return refcursor is
o_result_cur refcursor;
begin
open o_result_cur for
select * from table(case emp_test(p_deptno) as emp_table);
return o_result_cur;
end get_result;end my_pkg;调用
result = my_pkg.get_result(10);