Oracle自定义函数的例子
2012-05-11 18:02
246 查看
一、单值函数:
功能:获取t_basic_organization表主键的下一个值,用于向该表中插入新值。
二、记录集函数:
功能:通过递归调用获取所有子行信息。
PS: childorg_ty 和 childorg_tb 的定义:
/* Formatted on 2012/05/11 18:02 (Formatter Plus v4.8.8) */ CREATE OR REPLACE FUNCTION demo.f_basic_get_orgid RETURN NUMBER IS i_return NUMBER (11); i_get_id NUMBER (11); i_line NUMBER (11); CURSOR cur_org IS SELECT organization_id, ROWNUM AS rn FROM t_basic_organization ORDER BY organization_id; cur_org_val cur_org%ROWTYPE; BEGIN i_return := 0; OPEN cur_org; LOOP FETCH cur_org INTO cur_org_val; EXIT WHEN cur_org%NOTFOUND; i_get_id := cur_org_val.organization_id + 1; i_line := cur_org_val.rn; IF i_get_id != i_line THEN i_return := i_line - 1; EXIT; END IF; END LOOP; CLOSE cur_org; IF i_return = 0 THEN SELECT COUNT (1) INTO i_return FROM t_basic_organization; END IF; RETURN i_return; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN OTHERS THEN RAISE; END f_basic_get_orgid;
功能:获取t_basic_organization表主键的下一个值,用于向该表中插入新值。
二、记录集函数:
/* Formatted on 2012/05/11 18:03 (Formatter Plus v4.8.8) */ CREATE OR REPLACE FUNCTION demo.f_get_childorg (parent_org NUMBER) RETURN childorg_tb PIPELINED IS obj_childorg childorg_ty; sub_childorg childorg_ty; org_level NUMBER; BEGIN org_level := 0; FOR myrow IN (SELECT * FROM t_basic_organization WHERE parent_organization = parent_org) LOOP obj_childorg := childorg_ty (myrow.organization_id, myrow.organization_name, myrow.parent_organization, org_level ); PIPE ROW (obj_childorg); FOR subrow IN (SELECT * FROM TABLE (f_get_childorg (obj_childorg.organization_id))) LOOP sub_childorg := childorg_ty (subrow.organization_id, subrow.organization_name, subrow.parent_organization, subrow.organization_level + 1 ); PIPE ROW (sub_childorg); END LOOP; END LOOP; RETURN; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; WHEN OTHERS THEN RAISE; END f_get_childorg;
功能:通过递归调用获取所有子行信息。
PS: childorg_ty 和 childorg_tb 的定义:
/* Formatted on 2012/05/14 12:02 (Formatter Plus v4.8.8) */ CREATE OR REPLACE TYPE demo.childorg_ty AS OBJECT ( organization_id NUMBER, organization_name VARCHAR2 (250), parent_organization NUMBER, organization_level NUMBER )
CREATE OR REPLACE TYPE DEMO.CHILDORG_TB AS TABLE OF CHILDORG_TY;
相关文章推荐
- oracle自定义判断数据是否为数值函数
- oracle自定义函数、存储过程2
- Oracle 表类型-表值函数-过程 -例子
- oracle 存储过程和函数例子 --2
- 关于Oracle过程,函数的经典例子及解析
- 关于Oracle过程,函数的经典例子及解析
- ORACLE自定义函数
- oracle函数及自定义type
- Oracle 自定义函数示例
- oracle自定义数字验证函数
- oracle 返回结果集的自定义函数 数据库管道
- oracle 显示unix timestamp 自定义函数
- 最完整的:JAVA调用ORACLE的存储过程、函数的返回结果集例子
- oracle创建存储过程和函数的简单例子
- oracle 自带函数大全及例子
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- ORACLE分析函数的应用例子1 over partition by
- OleDb执行Oracle带自定义函数的SQL深度历险
- Oracle自定义函数——f_henry_GetStringLength
- oracle自定义函数、存储过程