`
liyf_324
  • 浏览: 35485 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

Oracle中function的递归

阅读更多
之前在测试一个FUNCTION的时候都是用pl/sql提供的test,但我今天写一个函数需要递归的时候就不知道怎么做了,还好见别人用sql测了我写的函数,所以这个递归就好写多了,废话少说测试FUNCTION的sql如下:
SELECT FUNCTIONNAME('参数') FROM DUAL;
有递归的sql如下:

create or replace function IS_BLOCK
(IN_DOMAINID IN NUMBER
) return NUMBER is
  VAR_COUNT NUMBER;
  VAR_PARENTID NUMBER;
  Result NUMBER;
begin
  SELECT COUNT(ID) INTO VAR_COUNT FROM BLOCK_LOG WHERE RESULTSTATUS IN (0, 2) AND SOURCEID = IN_DOMAINID;
  IF VAR_COUNT = 0 THEN
    SELECT PARENTID INTO VAR_PARENTID FROM DOMAINTREE WHERE DOMAINID = IN_DOMAINID;
    /*判断是否是根节点*/
    IF VAR_PARENTID = 0 THEN                                
       Result := 0;
    ELSE
        SELECT TEST_FUNCTION(VAR_PARENTID) INTO Result FROM DUAL;
    END IF;
  ELSE
    Result := 1;
  END IF;
  return Result;
end IS_BLOCK;
分享到:
评论

相关推荐

    Oracle 递归函数介绍

    在 Oracle 中,递归函数可以使用 CONNECT BY 语句来实现递归查询。CONNECT BY 语句的基本语法如下所示: ```sql SELECT ... FROM ... START WITH ... CONNECT BY ... ``` 其中,`START WITH` 子句指定了递归查询的...

    ORACLE_FUNCTION.rar_oracle

    如ROWNUM返回行号,LEVEL在递归查询中表示层级,CONNECT_BY_ROOT用于找到层次结构中的根节点。 Oracle的内置函数极大地丰富了SQL语言的功能,使得我们可以更加灵活地处理数据和编写复杂查询。理解并熟练运用这些...

    DB2递归实现

    在Oracle数据库中,有一个专门的语句叫做CONNECT BY,它可以实现递归查询。但是,DB2数据库中没有类似的语句,需要使用公共表表达式(CTE)和UNION ALL来实现递归。 DB2递归实现有很多应用场景,例如组织结构图...

    所有BOM列表_VBA连接BOM表的递归展开至最后一阶_

    在这个案例中,VBA脚本可能包含了一系列的Sub过程和Function,用于与Oracle数据库交互,获取BOM数据,并在Excel工作表中展示出来。 2. **Oracle数据库连接**:VBA可以使用ADODB(ActiveX Data Objects Database)库...

    Oracle Form自动生成序号

    在Oracle Forms中,有时我们需要处理复杂的业务数据,例如处理带有父子结构的数据集时,通常需要在表单中自动生成唯一的序号,以确保每一行记录的独特性和有序性。本文将详细介绍如何在具有Master-Detail结构的...

    MySQL递归查询

    MySQL 递归查询是指在 MySQL 中实现类似 Oracle Hierarchical Queries 的功能,用于查询树形结构中的所有子节点。由于 MySQL 目前还没有内置的递归查询功能,因此需要使用其他方法来实现。 第一种方法:使用函数来...

    oracle函数大全中文api文档

    CREATE TRIGGER用于创建触发器,PROCEDURE和FUNCTION分别用于定义过程和函数,这在数据库业务逻辑实现中至关重要。 11. **序列函数**: NEXTVAL和CURRVAL用于获取序列的下一个和当前值,序列在自增主键生成方面...

    ORACLE转DB2对照全解

    **注意:** Oracle提供了`CONNECT BY`语法来实现层次查询,而DB2则通过递归公共表表达式(CTE)来实现。 #### 九、打印输出信息 **Oracle:** ```sql DBMS_OUTPUT.PUT_LINE('Hello World'); ``` **DB2:** ```sql ...

    ORACLE面试测试题目

    - 此问题可能需要更复杂的递归查询或自连接来解决。示例代码如下: ``` SELECT * FROM test a, test b WHERE a.parent_id = b.id ``` ### 20. 如何使用 SQL 语句实现查找一列中的第 N 大值 - 首先,对列进行...

    Oracle函数(chm)

    在Oracle函数中,我们可以找到各种用于处理数据、执行数学计算、进行字符串操作、日期时间处理以及逻辑判断等功能的工具。下面,我们将深入探讨Oracle函数的一些关键知识点。 1. **数学函数**: - `ABS()`: 返回一...

    多级数据-Mysql中的递归层次查询(父子查询).doc

    Oracle 中有 Hierarchical Queries 可以通过 CONNECT BY 来查询,但是,在 MySQL 中还没有对应的函数。为了解决这个问题,我们可以使用自定义函数来实现递归层次查询。 首先,我们需要创建一个名为 `treenodes` 的...

    oracle常用SQL语句(汇总版).zip

    以上内容只是Oracle SQL语句的冰山一角,实际应用中还有更复杂的查询技巧、事务管理、游标、递归查询等。在"oracle常用SQL语句(汇总版)"文档中,读者可以找到更多关于这些主题的详细信息,对于学习和掌握Oracle SQL...

    oraclesql参考手册

    12. 高级特性:Oracle SQL还包括递归查询、联接优化、物化视图、物质化子查询、并行查询、物化视图刷新、闪回技术等高级功能,为数据库管理和开发提供了更多灵活性和效率。 通过深入学习Oracle SQL参考手册,开发者...

    Oracle 开发DBA SQL编写规范

    - 使用递归公共表达式(Recursive Common Table Expressions, RCTE)来处理树形结构数据。 - 示例: ```sql with recursive tree as ( select id, parent_id, name from tab1 where parent_id is null union ...

    Oracle系统函数大全

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,其PL/SQL是一种强大的过程化编程语言,用于处理数据库中的数据。...Oracle SQL function.ppt文件可能包含这些函数的详细讲解和示例,是深入学习的好资源。

    Oracle常用命令参考

    9. **@@**: 类似于@,但允许递归调用脚本,即在执行脚本的过程中可以再次调用同一脚本。 10. **ABS**: 数学函数,返回参数的绝对值。 11. **ACCEPT**: SQL\*Plus命令,用于接收用户输入并将其存储到变量中。 12. ...

    ORACLE SQL变成手册

    ### ORACLE SQL编程手册知识点详解 #### 存储过程 **1.... 存储过程是一种预编译的PL...通过这些详细的知识点介绍,我们可以更好地理解和使用Oracle中的存储过程、函数以及触发器,从而提高数据库应用程序的效率和性能。

    关于ORACLE PL笔记

    Oracle PL/SQ 是 Oracle 数据库的一种过程化语言,它结合了 SQL 的数据查询功能和高级编程语言的特点,用于处理数据库中的复杂业务逻辑。本笔记主要涵盖四个核心概念:存储过程、函数、触发器和包。 **一、存储过程...

Global site tag (gtag.js) - Google Analytics