在代码中使用递归可能大部分程序员都不陌生,但是在存储过程或者函数中写个递归估计就不多见了。
今天遇到了一个在oracle函数中使用递归的例子,特记录下来,方便以后查阅
CREATE OR REPLACE FUNCTION F_Func(v_pcatalogue IN NUMBER, i_newPcatalogue IN NUMBER, v_authTypeId in number)
RETURN NUMBER
as
v_newCatalogueId number(10);
v_oldCatalogueId number(10);
v_newPcatalogue number(10);
v_count number(10);
v_value number(10);
--根据目录表父节点ID查询目录表数据的游标
Cursor cusor_1(v_pcatalogue number) is
select id, cname, ename, cdescription, edescription, authtype, pcatalogue, orderb, createtime, userid, creater, updatetime, updateuserid, updator, state from t_catalogue
where authtype=v_authTypeId and pcatalogue=v_pcatalogue;
BEGIN
--记录下旧的父节点ID
v_oldCatalogueId := v_pcatalogue;
--记录下新的父节点ID
v_newPcatalogue := i_newPcatalogue;
select count(1) into v_count from t_catalogue where authtype=v_authTypeId and pcatalogue=v_pcatalogue;
if v_count = 0 then
return 1;
else
for c2 in cusor_1(v_oldCatalogueId) loop
--生成新的id及拷贝工作
v_oldCatalogueId := c2.id;
select HIBERNATE_SEQUENCE.NEXTVAL into v_newCatalogueId from dual;
if v_newPcatalogue is null then
select HIBERNATE_SEQUENCE.NEXTVAL into v_newPcatalogue from dual;
end if;
insert into t_catalogue_20140619(id, cname, ename, cdescription, edescription, authtype, pcatalogue, orderb, createtime, userid, creater, updatetime, updateuserid, updator, state)
values(v_newCatalogueId, c2.cname, c2.ename, c2.cdescription, c2.edescription, c2.authtype, v_newPcatalogue, c2.orderb, c2.createtime, c2.userid, c2.creater, c2.updatetime, c2.updateuserid, c2.updator, c2.state);
commit;
--不用变量接值,编译过不了
v_value := F_Func(v_oldCatalogueId, v_newCatalogueId, v_authTypeId);
end loop;
--这个返回很重要
return 1;
end if;
END F_Func;
/
分享到:
相关推荐
"Oracle函数大全中文API文档"是一个非常实用的资源,它提供了对Oracle数据库所有内置函数的详尽解释,帮助开发者和DBA快速理解和使用这些函数。 1. **日期与时间函数**: Oracle提供了处理日期和时间的大量函数,...
以上只列举了一部分Oracle函数,实际中还有很多其他函数,如位操作函数、游标函数、递归函数等。掌握这些函数的用法对于编写高效的SQL查询和存储过程至关重要。"Oracle函数大全(分类显示).chm"文档应该包含了详细的...
在学习和应用Oracle函数时,建议结合实际场景进行练习,理解每个函数的用法和返回值类型,同时注意函数间的相互配合,以解决更复杂的查询需求。通过阅读《oracle+110个常用函数.doc》这样的文档,可以系统地学习和...
在Oracle函数中,我们可以找到各种用于处理数据、执行数学计算、进行字符串操作、日期时间处理以及逻辑判断等功能的工具。下面,我们将深入探讨Oracle函数的一些关键知识点。 1. **数学函数**: - `ABS()`: 返回一...
除了以上列举的基本函数,Oracle还提供了大量的其他函数,如游标处理函数、递归查询的层次查询函数、正则表达式函数等,它们共同构成了Oracle数据库的强大工具箱。在实际开发中,理解并熟练运用这些函数,能显著提升...
本文将详述“Oracle函数大全”中涵盖的关键知识点,帮助读者深入理解和掌握Oracle数据库中的函数应用。 1. **字符串处理函数** - `SUBSTR()`:从字符串中提取子串。 - `LENGTH()`:返回字符串的长度。 - `UPPER...
以上只是Oracle内建函数的一部分,实际中还有许多其他函数,如位运算函数、分析函数、游标函数等,它们极大地增强了SQL语言的功能,使得Oracle数据库能够处理各种复杂的数据操作。Oracle Built-in Functions.chm文件...
"Oracle函数大全"这个压缩包文件显然包含了Oracle数据库中常用的函数的详细资料,特别是进行了汉化处理,这对于中文使用者来说是一份非常实用的参考资料。 1. **数学函数**:Oracle提供了各种数学函数,如ABS()用于...
"Oracle函数大全(精)"这个资源显然为学习和查询Oracle中的各种函数提供了一个全面的指南。下面,我们将深入探讨Oracle数据库中的一些重要函数类型及其用途。 1. **数值函数**: - `ABS()`:返回一个数的绝对值。 ...
这些函数只是Oracle数据库庞大函数库的一部分,还有更多如游标、递归、集合操作等高级特性等待开发者探索。了解并熟练运用这些函数,能大大提高数据库管理的效率和灵活性,使得数据处理更加精确和便捷。在实际应用中...
以上仅是Oracle函数的冰山一角,实际中还有许多其他函数,如递归函数、窗口函数、正则表达式函数等,这些函数极大地增强了查询和数据处理的灵活性。学习和掌握Oracle函数对于数据库管理和开发至关重要,能有效提升...
以上只是Oracle函数大全中的一部分内容,实际的Oracle函数库还包括更多高级功能,如递归函数、游标、存储过程、触发器等。理解和熟练运用这些函数,对于提升数据库管理和开发的效率至关重要。通过深入学习和实践,你...
例如,可以使用存储过程、递归查询或者窗口函数来替代游标。 综上所述,理解并熟练掌握SQL游标是提升数据库操作能力的重要步骤。通过游标,我们可以实现更加灵活和精细的数据处理,但也需要注意在性能和灵活性之间...
Oracle 10g中的函数远不止这些,还包括位操作函数、游标函数、递归查询函数等。了解并熟练使用这些函数,可以极大地提高数据库操作的效率和灵活性。通过《oracle·10G函数大全.chw》和《oracle·10G函数大全.chm》...
Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,其强大...通过熟练掌握这些内置SQL函数,开发者可以更高效地在Oracle数据库中进行数据管理和分析。了解和运用这些工具,能显著提升数据库管理的效率和质量。
"Oracle函数大全"这个资源涵盖了Oracle数据库中常用的各种函数,可以帮助开发者解决日常编程中遇到的问题。 1. **字符串处理函数**: - `UPPER` 和 `LOWER`:用于将字符串转换为大写或小写。 - `SUBSTR`:从字符...
Oracle函数详解涵盖了数据库管理系统Oracle中广泛使用的各种函数,这些函数对于数据处理和查询至关重要。在Oracle SQL中,函数被用来处理和操作数据,包括数学、字符串、日期、转换以及更复杂的聚合函数。以下是一些...
文档“ORACLE函数大全.doc”可能详细介绍了这些函数的语法、用法示例以及它们在实际应用中的作用,对于Oracle数据库的开发人员和管理员来说,是一份非常实用的参考资料。通过深入学习和理解这些函数,可以显著提高在...
在Oracle中,有多种方式来处理和操作数据,如标量函数、游标、表值函数、存储过程、触发器以及递归查询等。以下将对这些知识点进行详细说明: 1. **标量函数与游标**: - 标量函数:创建`getRoomNumber`函数展示了...
3. **高级SQL特性**:书中涵盖了Oracle特有的SQL功能,如PL/SQL过程化语言,游标,递归查询,窗口函数,分析函数,以及在SQL中使用正则表达式等,这些高级特性为复杂的数据处理提供了强大支持。 4. **性能调优**:...