首页 > 代码库 > 取存过和函数的返回值
取存过和函数的返回值
目录
一、取函数的返回值
1.取函数的系统类型数据
2.取函数的自定义类型数据
3.取函数的自定义类型数据集合
二、取存储过程的返回值
1.取存过的系统类型数据
2.取存过的自定义类型数据
3.取存过的自定义类型数据集合
一、取函数的返回值
0.创建自定义类型
--自定义类型create or replace type mytype as object( str1 number, str2 varchar2(10));--自定义类型集合create or replace type mytype_list as table of mytype;
1.取函数的系统类型数据
--1函数 返回字符串create or replace function fun_ceshi1(num1 number, num2 number) return varchar2 as str1 varchar2(111);begin str1 := ‘测试时。。。‘; return str1;end;--取值select fun_ceshi1(1,1) from dual;
2.取函数的自定义类型数据
--2函数 返回自定义类型create or replace function fun_ceshi2(num1 number, num2 number) return mytype as my mytype;begin select mytype(ename1, ename2) into my from (select t.empno ename1, t.ename ename2 from emp t where rownum=1); return my;end; --select fun_ceshi2(1,1) from dual;
3.取函数的自定义类型数据集合
--3函数 返回自定义类型集合create or replace function fun_ceshi3(num1 number, num2 number) return mytype_list as my mytype_list;begin select mytype(ename1, ename2) BULK COLLECT into my from (select t.empno ename1, t.ename ename2 from emp t); return my;end; --select * from table(fun_ceshi3(1,1));
二、取存储过程的返回值
1.取存过的系统类型数据
--1存过 返回字符串create or replace procedure pro_ceshi1(num1 number, num2 number, num3 out varchar2) asbegin select ‘字符串num‘ into num3 from dual;end;--调用declare num3 varchar2(111);begin pro_ceshi1(1, 1, num3); dbms_output.put_line(num3);end;
2.取存过的自定义类型数据
--2存过 返回自定义类型create or replace procedure pro_ceshi2(num1 number, num2 number, strType out mytype) asbegin select mytype(ename1, ename2) into strType from (select t.empno ename1, t.ename ename2 from emp t where rownum=1);end;--调用declare strType mytype;begin pro_ceshi2(1, 1, strType); dbms_output.put_line(strType.str1 || ‘ ‘ || strType.str2);end;
3.取存过的自定义类型数据集合
--3存过 返回自定义类型集合create or replace procedure pro_ceshi3(num1 number, num2 number, strType out mytype_list) asbegin select mytype(ename1, ename2) BULK COLLECT into strType from (select t.empno ename1, t.ename ename2 from emp t);end;--调用declare strType mytype_list; cursor c_c is select * from table(strType);begin pro_ceshi3(1, 1, strType); for v_r in c_c loop dbms_output.put_line(v_r.str1 || ‘ ‘ || v_r.str2); end loop;end;
取存过和函数的返回值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。