oracle存储过程递归调用_函数的间接递归调用

oracle存储过程递归调用_函数的间接递归调用存储过程和函数一样也可以递归调用,调用方法类似。如下是求某个数以内的数字求和:CREATEPROCEDUREaProc_Test@INPUTint,@SumintoutputASBEGINSETNOCOUNTON;if(@Sumisnull) set@Sum=0if(@INPUT>0)begin …

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

存储过程和函数一样也可以递归调用,调用方法类似。如下是求某个数以内的数字求和:

CREATE PROCEDURE aProc_Test
    @INPUT int,
    @Sum int output
AS
BEGIN
    SET NOCOUNT ON;
    if(@Sum is null)
		set @Sum=0
    if(@INPUT>0)
    begin
		set @INPUT=@INPUT-1
		set @Sum=@Sum+@INPUT
		EXEC aProc_Test @INPUT,@Sum output 
	end
END
GO

--调用存储过程,对1~10的数字求和
DECLARE @OUT int,@output int
EXEC aProc_Test 11,@output output
SELECT [OUTPUT值]=@output
go

输出结果:

oracle存储过程递归调用_函数的间接递归调用

注意:递归存储过程一般会用到 output 或 return,两者返回值类型上有一定的区别,output 基本上没有限制,但 return 返回的一般是 int 类型。

下面是审核流中根据某一个节点查询下一个节点,就是用的 return 实现

CREATE PROCEDURE [dbo].[up_Flow_JudegNextStep]
	@StepId int,
	@FRId int,
	@PosId int
AS
BEGIN
	SET NOCOUNT ON;
	declare @SRId int;
	select @SRId = SRId from FL_FlowStep where StepId = @StepId;
	--插入当前步骤
	exec up_Flow_AddPath @FRId = @FRId, @StepId = @StepId, @SRId = @SRId, @ObjId = @PosId;
	
	--处理分支
	declare judgeCursor Cursor For
	select FLDField,Operator,Value,NextStep from FL_FlowStepJudge a left join FL_FlowFormField b
	on a.FLDId = b.FLDId where StepId = @StepId;
	open judgeCursor;
	
	declare @field varchar(10),@Operator varchar(10),@value varchar(10), @next int;
	fetch next from judgeCursor into @field,@Operator,@value,@next;
	while(@@FETCH_STATUS=0)
	begin
		declare @sql nvarchar(100);
		declare @has int;
		set @sql = 'select @a = count(1) from FL_FlowData where FRId='+CAST(@FRId as varchar(10))+' and '+@field+@Operator+''''+@value+'''';
		exec sp_executesql @sql,N'@a int output',@has output;
		if @has > 0
		begin
			close judgeCursor;
			deallocate judgeCursor;
			if @next > 0
			begin
				exec up_Flow_JudegNextStep @StepId=@next,@FRId=@FRId,@PosId=@PosId;
			end
			return 1;
		end
		fetch next from judgeCursor into @field,@Operator,@value,@next;
	end
	close judgeCursor;
	deallocate judgeCursor;
	return 0;
	--处理分支结束
END

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189586.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 网络编程API-下 (I/O复用函数)[通俗易懂]

    网络编程API-下 (I/O复用函数)

    2022年1月29日
  • jQuery雷达扫描切换幻灯片代码

    jQuery雷达扫描切换幻灯片代码

    2021年9月8日
  • SSM整合(基于XML配置方式)

    SSM整合(基于XML配置方式)我们整合SSM框架时,大部分都是基于注解+XML配置方式。只因为结合这两种方法能够实现同样的效果,而且会更加的轻松。所以在此推荐朋友们用注解+XML配置的方式,基于注解+XML配置方式会另写一篇。但是有朋友和我说,怎么用纯XML方式整合SSM呢?我做了一个入门的整理,如果不足,请多多指教。本文是基于XML配置方式整合SSM框架,由于本人不太推荐这种方式。首先可以看一下完整的目录结构…

    2022年5月11日
  • Java Web项目 慧心人力资源管理系统[通俗易懂]

    Java Web项目 慧心人力资源管理系统[通俗易懂]美和易思JavaWeb机试试题题目:慧心人力资源管理系统文档下载:https://download.csdn.net/download/weixin_44893902/16336711实现代码下载:目录一、语言和环境二、实现功能三、数据库设计四、具体要求及推荐实现步骤五、评分标准六、实现代码一、语言和环境实现语言:JAVA语言。 环境要求:MyEclipse/Eclipse+Tomcat+MySql。 使用技术:Jsp+Servlet+Jav..

    2022年5月28日
  • YourPHP笔记

    YourPHP笔记

    2021年10月9日
  • 350页前端校招面试题直击大厂:前端基础、前端核心、计算机基础、项目、Hr面…「建议收藏」

    350页前端校招面试题直击大厂:前端基础、前端核心、计算机基础、项目、Hr面…「建议收藏」前言考虑到关注的小伙伴们也会有在校生或应届生,要参加校招的同学,一直挺想总结一些关于校招面试题,赶在春招结束前终于写完了,除了写到前端方面的面试题外,项目、职业发展、H面等高频问题也会有,写的很详细,全方面做好准备,为同学们的校招保驾护航!目录1.HTML2.CSS3.前端基础4.前端核心5.前端进阶6.移动端开发7.计算机基础8.算法与数据结构9.设计模式10.项目11.职业发展12.Hr面正文HTML1.浏览器页面有哪三层构成,分别是什么,作用是什么?2.HTML5的

    2022年6月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号