请举一个pl/sql函数返回多值的例子,易懂的,谢谢
解决方案 »
- 运行这个的时候报值过多是什么意思呢
- 如何让Oracle DB安装后有oracore/include,public之类的目录
- 如何新增一个数据库实例?
- 如何将多表关联的数据生成数据表,同时要去掉多余的记录.请指教.
- 请教绝对高手,TO_DATE的问题,急!
- godblessu(上帝保佑)接分,今天这个网站不知道怎么了,贼慢
- 使用TADOQUERYS查询ORACLE数据库提示出错
- 怎么样调试函数?
- 【求助】可否在VB中执行PL/SQL语句?
- oracle字符串类型的时间数据进行直接比较
- 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);