递归存储过程

select id from oc_groups where FIND_IN_SET(id, getChildLst(23));

select id from oc_groups where FIND_IN_SET(id, getChildLst(9))

CREATE FUNCTION `getChildLst`(rootId INT)
RETURNS varchar(1000)
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = ‘$‘;
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,‘,‘,sTempChd);
SELECT group_concat(id) INTO sTempChd FROM oc_groups where FIND_IN_SET(parentid,sTempChd)>0;
END WHILE;
RETURN sTemp;
END

show function STATUS

drop function getChildLst

delete from oc_groups where id>9

时间: 2024-08-06 03:39:29

递归存储过程的相关文章

Oracle笔记 十、PL/SQL存储过程

--create or replace 创建或替换,如果存在就替换,不存在就创建 create or replace procedure p is cursor c is select * from dept2 for update; begin for row_record in c loop if (row_record.deptno = 30) then update dept2 set dname = substr(dname, 0, length(dname) - 3) where c

数结构中,节点移动解决方案

我的数据表结构如下: 1 USE db 2 GO 3 4 /****** Object: Table [dbo].[cx_Navigation] Script Date: 10/23/2014 22:36:28 ******/ 5 SET ANSI_NULLS ON 6 GO 7 8 SET QUOTED_IDENTIFIER ON 9 GO 10 11 CREATE TABLE [dbo].[cx_Navigation]( 12 [ID] [int] NOT NULL, 13 [NavType

SQL实现递归及存储过程中In()参数传递解决方案[转]

SQL实现递归及存储过程中In()参数传递解决方案 1.SQL递归 在SQL Server中,我们可以利用表表达式来实现递归算法,一般用于阻止机构的加载及相关性处理. -->实现: 假设OrganiseUnit(组织机构表)中主要的三个字段为OrganiseUnitID(组织机构主键ID).ParentOrganiseUnitID(组织机构父ID).OrganiseName(组织机构名称) ? 1 2 3 4 5 6 7 [sql] with organise as (select * from

使用mysql存储过程递归tree(如一个上级下面的所有下级的所有下级。。。。)

创建存储过程 DROP FUNCTION `getSubAgent`;CREATE FUNCTION `getSubAgent` (agentId INT)RETURNS VARCHAR(4000)BEGINDECLARE sTemp VARCHAR(4000);DECLARE sTempChd VARCHAR(4000); SET sTemp = 0;SET sTempChd = cast(agentId as char); WHILE sTempChd is not NULL DOSET s

存储过程递归获取获取多级部门全名

部门表: 人员表: 存储过程: --OrgID 72 当前的部门IDALTER function [dbo].[getOrgAllName](@OrgID int)returns nvarchar(500)asbegin --调试用--declare @OrgID int--set @OrgID=72 declare @oname nvarchar(50)declare @fid intdeclare @rtnValue nvarchar(500) select @oname=orgname,@

java servlet调用带有多个返回结果集的存储过程

一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要返回更多结果集也是一样的,如果需要判断,就继续增加存储过程参数,如果不需要判断就直接在存储过程中,增加查询的SQL语句即可).实现这个功能还有更简单的方法,可以写SQL关联语句查询出两张表的结果,返回一个组合的结果集.我这里当然是为了实现这个效果,所以把它的实现复杂化了.继续说下我今天在mysql上

Oracle存储过程中异常Exception的捕捉和处理

Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Varchar2) AUTHID CURRENT_USER AS --声明异常 some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition v_ErrorCode NUMBER; -- Variable to hold

Java调用SQL Server的存储过程详解

转载自Microsoft的官方文档 http://msdn2.microsoft.com/zh-cn/library/ms378995.aspx收录于 www.enjoyjava.net/f25 本文较长,包含了如下几部分 使用不带参数的存储过程 使用带有输入参数的存储过程 使用带有输出参数的存储过程 使用带有返回状态的存储过程 使用带有更新计数的存储过程 1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义

MySQL5-函数/存储过程与定时器、触发器

目录 一.函数/存储过程 二.定时器 三.触发器 四.函数语句学习 一.函数/存储过程 1.函数与存储过程 (1) function与procedure的区别:一个有返回值,一个没有,仅此而已.上述说法是错误的,function和procedure的用法有很多不同,总体来说procedure受到的限制较少,function的限制较多:而且procedure可以使用out参数返回值,因此尽量采用procedure.比如,以下存储过程的创建是合法的,但函数的常见则是非法的. #存储过程合法 DROP