MySql:存储过程编译错误代码1337
来源:互联网 发布:怕错过了也不会知 编辑:程序博客网 时间:2024/06/06 05:33
ERROR 1337 (42000): Variable or condition declaration after cursor
由于在项目需要,写了个存储过程,涉及到了游标的使用,但是以前都是使用一个游标,这次是两个游标嵌套,并且有关联,就是第二个游标的结果集需要第一个游标的循环值,辛辛苦苦写完,MySql却给我报错:ERROR 1337 (42000): Variable or condition declaration after cursor。
百度了一下都是在说,要先声明变量,再开始游标。游标(cursor)必须在声明处理程序之前被声明,并且变量和条件必须在声明游标或处理程序之前被声明。改了好几遍还是不可以,最后实在没办法,将内部的游标循环单独写一个储存过程,再用外层的游标去调用这个储存过程--call procedure
外层的游标
BEGIN /* 定义变量一 */ DECLARE bbsCount int; /*文档总数*/DECLARE bbsKeyWordCount int; /*文档总词汇数*/DECLARE keyWord VARCHAR(25); /*关键字*/DECLARE depart VARCHAR(25); /*部门*/DECLARE keyWordCount int; /*关键字出现的文档数*/DECLARE keyWordWeight DOUBLE; /*关键字的出现次数*/DECLARE keyWordTFIDF DOUBLE; /*文档的TFIDF*/DECLARE bbsDataID int; /*文档的TFIDF*/ -- 遍历数据结束标志 DECLARE bbsDone INT DEFAULT FALSE;DECLARE keyWordDone INT DEFAULT FALSE;/* 定义游标 */ DECLARE bbs_Cur CURSOR FOR SELECT id FROM bbs_data;-- 将结束标志绑定到游标DECLARE CONTINUE HANDLER FOR NOT FOUND SET bbsDone = TRUE;select max(id) into bbsCount from bbs_data;/*打开游标*/ OPEN bbs_Cur; /* 循环执行 */ bbs_loop:LOOP FETCH bbs_Cur INTO bbsDataID; if bbsDone = 1 then leave bbs_loop; end if; select sum(weight) into bbsKeyWordCount from key_word where bbs_data_id=bbsDataID;CALL p_tf_idf(bbsDataID,bbsCount,bbsKeyWordCount); /* 循环结束 */ end loop bbs_loop; #当_done=1时退出被循 /*关闭游标*/ CLOSE bbs_Cur; END内层的游标
BEGINDECLARE keyWord VARCHAR(25); /*关键字*/DECLARE depart VARCHAR(25); /*部门*/DECLARE keyWordCount int; /*关键字出现的文档数*/DECLARE keyWordWeight DOUBLE; /*关键字的出现次数*/DECLARE keyWordTFIDF DOUBLE; /*文档的TFIDF*/DECLARE keyWordDone INT DEFAULT FALSE;DECLARE key_Cur CURSOR FOR select key_word,weight,department from key_word where bbs_data_id=bbsDataID;DECLARE CONTINUE HANDLER FOR NOT FOUND SET keyWordDone = TRUE;OPEN key_Cur;keyWord_loop:LOOP FETCH key_Cur INTO keyWord,keyWordWeight,depart; if keyWordDone = 1 then leave keyWord_loop; end if;select COUNT(1) into keyWordCount from key_word where key_word=keyWord;set keyWordTFIDF=keyWordWeight/bbsKeyWordCount*log(bbsCount/(keyWordCount+1));INSERT into tf_idf( key_word, tf_idf,department, deleted, create_time, create_by, update_time, update_by)VALUES(keyWord,keyWordTFIDF,depart,0,SYSDATE(),1,SYSDATE(),1);END LOOP keyWord_loop;CLOSE key_Cur;END
0 0
- MySql:存储过程编译错误代码1337
- mysql存储过程错误代码1307
- MYSQL 存储过程异常处理 报错 错误代码: 1337
- mysql存储过程错误代码1307解决方案(转)
- 含SQLSTATE mysql错误代码汇总大全,可用于存储过程判断异常情况
- 【mysql】mysql存储过程
- 存储过程重新编译
- 重编译存储过程
- 重新编译存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- MySQL存储过程详解 mysql 存储过程
- 解决DevExpress GridControl 用List无法在列表上添加新行问题
- STL容器 vector deque简记
- spring boot概述
- Maven依赖排除 禁止依赖传递 取消依赖的方法
- 深入Redux架构
- MySql:存储过程编译错误代码1337
- map容器分别按key和value排序
- 《JAVA与模式》之装饰模式
- Linux常用命令(3)之文件处理命令
- Nginx配置详解
- PAT打印沙漏
- 创建Android 项目,遇到parseSdkContent failed Could not initialize class android.graphics.Typeface
- 输入两个链表,找出它们的第一个公共结点
- iOS视频开发之AVPlayer