首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在同一块中声明的重复处理程序块

在同一块中声明的重复处理程序块
EN

Stack Overflow用户
提问于 2016-05-11 01:01:30
回答 1查看 2K关注 0票数 1

嗨,我正在写一个mysql过程,我一次使用两个游标,在实现这个过程时,面临着同一个块问题中定义的重复处理程序。我无法调试和纠正它。请帮帮我。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELIMITER $$
CREATE PROCEDURE chainReaction 
(
    in p_qry_stmt int,OUT procstatus varchar(500)
) 
BEGIN 
declare v_Count int(11);
    declare final_id  int DEFAULT 0;
        declare final_id2  int DEFAULT 0;
     DECLARE cust_id12 INT ;
       DECLARE aff_cust_id12 INT  ;
     DECLARE done int DEFAULT 0;
   declare v_col1 int;

  DECLARE cur2 CURSOR FOR select cust_id from tmp_Cust_Algmnt_Cust_Aff_Child  ;

  DECLARE cur1 CURSOR FOR select cust_id,aff_cust_id
from    (select * from t_aff_load
         order by cust_id,aff_cust_id) products_sorted,
        (select @pv := v_col1) initialisation
where   find_in_set(cust_id, @pv) > 0
and     @pv := concat(@pv, ',', aff_cust_id);

   /* declare continue handler for sqlstate '02000' set done = 1;*/

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 



/*
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;*/


DECLARE CONTINUE HANDLER FOR NOT FOUND SET @isNOTFOUND := 0 ;



    DECLARE EXIT HANDLER FOR SQLEXCEPTION
   BEGIN
      GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE, @errno = MYSQL_ERRNO, @text = MESSAGE_TEXT;
      SET @full_error = CONCAT("ERROR ", @errno, " (", @sqlstate, "): ", @text);
      set @isTrue = @full_error;
        insert into t_log(str_sstring) values(concat("chainReaction Execution Time: ", now() ," Exception :", @isTrue));
    SET procstatus:= @isTrue;
   END;




  DROP TABLE IF EXISTS tmp_Cust_Algmnt_Cust_Aff_Child;
  CREATE TEMPORARY TABLE tmp_Cust_Algmnt_Cust_Aff_Child (
   SeqNo bigint(20) NOT NULL PRIMARY KEY Auto_Increment ,
   cust_id int(11) NOT NULL,
   cust_algmnt_id bigint(20) NOT NULL
  );


 SET @isNOTFOUND := 1;

  SET @strQryStmt := CONCAT("INSERT INTO tmp_Cust_Algmnt_Cust_Aff_Child( cust_id, cust_algmnt_id )  ", p_qry_stmt);
  PREPARE QRYSTMT  FROM @strQryStmt;
  EXECUTE QRYSTMT;




    truncate table results_acc;
    truncate table results_prof;


OPEN cur2;

 repeat 
         fetch cur2           into  v_col1;
        /*   if no_more_rows1 then
               close cursor1;       
        leave LOOP1;
           end if;*/
  if not done then
  OPEN cur1;
   block2: BEGIN
               declare v_col2 int;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET doneLangLat = 1;

   repeat 
    FETCH cur1 INTO cust_id12,aff_cust_id12;
   if not doneLangLat then
    /* SET final_id = (select count(*) from t_cust where cust_id=cust_id12 and category_id=1);*/

  SET final_id2 = (select count(*) from t_cust where cust_id=aff_cust_id12 and category_id=1);
 if(final_id2>0) then
      insert into results_acc (cust_id1,aff_cust_id1)values(cust_id12,aff_cust_id12);  

      ELSE
       insert into results_prof (cust_id1,aff_cust_id1)values(cust_id12,aff_cust_id12);  

      end if;
      end if;
    until doneLangLat end repeat;
    END block2;
    close cur1;  
 end if;
    until done end repeat;
    close cur2;   

    DROP TABLE tmp_Cust_Algmnt_Cust_Aff_Child;

END$$
DELIMITER ;
EN

回答 1

Stack Overflow用户

发布于 2018-04-02 15:02:00

您正在复制处理程序块。要解决这个问题,您需要删除一个游标处理程序声明。

请查看手册Mysql游标

游标声明必须出现在处理程序声明之前以及变量和条件声明之后。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37157756

复制
相关文章
【Android Gradle 插件】Gradle 自动化构建 ① ( Gradle 构建工具简介 | Gradle 构建工具用途 )
在最开始 Android 开发时 , 使用 Eclipse + ADT 进行开发 , 使用的是 Ant 构建工具 进行构建 ;
韩曙亮
2023/03/30
5410
Gradle构建提速
提速法则一览 以上优化方案基于android gradle tools 3.0-alpha 关于Santa Tracker Project 9 个模块,包括Wear 500 多个Java文件 170
我就是马云飞
2018/02/05
1.4K0
Gradle构建提速
gradle中的增量构建
在我们使用的各种工具中,为了提升工作效率,总会使用到各种各样的缓存技术,比如说docker中的layer就是缓存了之前构建的image。在gradle中这种以task组合起来的构建工具也不例外,在gradle中,这种技术叫做增量构建。
程序那些事
2021/02/25
1.1K0
gradle中的增量构建
gradle中的增量构建
在我们使用的各种工具中,为了提升工作效率,总会使用到各种各样的缓存技术,比如说docker中的layer就是缓存了之前构建的image。在gradle中这种以task组合起来的构建工具也不例外,在gradle中,这种技术叫做增量构建。
子润先生
2021/06/21
8030
gradle中的增量构建
在我们使用的各种工具中,为了提升工作效率,总会使用到各种各样的缓存技术,比如说docker中的layer就是缓存了之前构建的image。在gradle中这种以task组合起来的构建工具也不例外,在gradle中,这种技术叫做增量构建。
程序那些事
2021/02/17
1.8K0
Gradle 构建脚本
Gradle提供了一种领域特定语言,目前同时支持 Groovy 和 Kotlin 。
佛系编码
2019/12/11
9030
Gradle 构建脚本
Gradle教程和指南 – 创建Gradle构建
遵循本指南,你将创建一个Gradle项目,调用一些基本的Gradle命令,并了解Gradle如何管理项目。
全栈程序员站长
2022/09/14
1.9K0
Gradle教程和指南 – 创建Gradle构建
gradle构建工具的使用前言:一、gradle简介:二、gradle的安装:三、eclipse中配置gradle:四、使用gradle构建项目:总结:
gradle是构建工具,类似于ant和maven,也许目前maven还是主流,但是gradle却是综合了ant和maven的优点,发展速度很快,所以很有必要了解一下。
贪挽懒月
2018/08/02
2.8K0
gradle构建工具的使用前言:一、gradle简介:二、gradle的安装:三、eclipse中配置gradle:四、使用gradle构建项目:总结:
Gradle 构建多种版本
开发APP时,会有生成不同版本的需求。比如测试版本和发布版本。不同版本之间通常有不同的设置。
AnRFDev
2021/02/01
6220
如何使用Docker构建运行时间较长的脚本
我想我已经找到了一个非常不错的Docker使用案例。你是不是会觉得这是一篇写Docker有多好多好的文章,开始之前我想和你确认,这篇文章会介绍如何把文件系统作为持久性的数据结构。
星哥玩云
2022/07/03
1.5K0
【Android Gradle 插件】Android Studio 工程 Gradle 构建流程 ① ( 触发 Android Studio 工程构建 | Gradle 构建脚本执行顺序 )
最近将 Android Studio 更新到了 Android Studio Dolphin | 2021.3.1 Patch 1 版本 , 发现创建的 Android 工程中 生成的 Gradle 脚本 不一样了 , 在这里 梳理下新版本的 Gradle 执行流程 ;
韩曙亮
2023/03/28
1.2K0
【Android Gradle 插件】Android Studio 工程 Gradle 构建流程 ① ( 触发 Android Studio 工程构建 | Gradle 构建脚本执行顺序 )
Gradle构建springBoot项目
你肯定会说为什么不用maven呢,我想说,要学就学自己不会的,这样才能会的更多,不是吗。
崔笑颜
2020/07/20
2.4K0
【Android Gradle 插件】Gradle 构建生命周期 ② ( Gradle 类的添加构建生命周期监听器函数 | Gradle#addListener 函数 )
org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
韩曙亮
2023/03/30
7120
Gunicorn运行Python的网站非常简单
Gunicorn运行Python的网站真是非常简单了,这里介绍下django如何使用,和apache复杂配置相比,这个配置少得真不是一个数量级。
星哥玩云
2022/06/29
5150
【Android Gradle 插件】Gradle 基础配置 ② ( Gradle 空白项目构建示例演示 )
在任意一个空白目录 , 创建 build.gradle 构建脚本 , 该脚本是 Gradle 构建的入口 ;
韩曙亮
2023/03/30
5960
【Android Gradle 插件】Gradle 基础配置 ② ( Gradle 空白项目构建示例演示 )
【Android Gradle 插件】Gradle 构建工具简介 ② ( Android 项目构建打包流程 | 构建工具发展 -> 手动配置 -> Ant -> Maven -> Gradle )
① 使用 AAPT 工具 打包资源文件 , 生成 R.java , resources.ap 文件 ;
韩曙亮
2023/03/30
7490
【Android Gradle 插件】Gradle 构建工具简介 ② ( Android 项目构建打包流程 | 构建工具发展 -> 手动配置 -> Ant -> Maven -> Gradle )
Gradle For Android(4)--构建不同的版本
当构建App的时候,通常都会有不同的版本。比如说测试版本,正式版本,Debug版本等等。而这些版本通常有不同的配置,比如说服务器的域名,Log开关,付费开关等等特性。
None_Ling
2018/10/24
2K0
Gradle For Android(4)--构建不同的版本
【Android Gradle 插件】Gradle 构建机制 ① ( 空白工程 Gradle 构建文件 | IntelliJ IDEA 工程构建文件 | Android Studio 工程构建文件 )
Gradle 构建工具 的本质是 Java 应用程序 , 是运行在 Java 虚拟机 上的 ; 在空白的目录中 执行该 Gradle 构建工具 , 可以 生成一系列的构建文件 ;
韩曙亮
2023/03/30
6010
【Android Gradle 插件】Gradle 构建机制 ① ( 空白工程 Gradle 构建文件 | IntelliJ IDEA 工程构建文件 | Android Studio 工程构建文件 )
【Android Gradle 插件】Gradle 构建机制 ④ ( Gradle 构建生命周期 | 初始阶段 | 配置阶段 | 执行阶段 )
Gradle 构建生命周期 完整流程 : 下图中的函数 , 都可以作为 HOOK 点 , 监听拦截 Gradle 的执行流程 ;
韩曙亮
2023/03/30
7500
【Android Gradle 插件】Gradle 构建机制 ④ ( Gradle 构建生命周期 | 初始阶段 | 配置阶段 | 执行阶段 )
gradle构建android项目详解
1、用Gradle构建 1.1 工程结构 如图所示,这是一个不能更普通的Android的Gradle工程了。 根目录下面的settings.gradle当中主要是用来include子模块的,比如我
xiangzhihong
2018/02/01
2.3K0
gradle构建android项目详解

相似问题

gradle构建时间长- Android

07

在中构建非常长的时间

45

颤振非常长的构建时间

18

SSRS“不在”运行需要非常长的时间。

22

Gradle构建非常慢

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文