- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下一个存储过程,我之前用游标在 mysql 中创建了其他过程,但是我这个,mysql 给我一个错误:该过程是下一个:
DROP PROCEDURE IF EXISTS systm;
delimiter //
CREATE PROCEDURE systm()
BEGIN
DECLARE bdone INT;
DECLARE var1 VARCHAR(250);
DECLARE var2 VARCHAR(250);
DECLARE puntero VARCHAR(5);
SET @query = CONCAT('CREATE TABLE IF NOT EXISTS `wg_init` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`nombre` varchar(200) NOT NULL,
`valor` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DECLARE curs CURSOR FOR SELECT `nombre` FROM `wg_datos`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;
OPEN curs;
SET bdone = 0;
REPEAT
FETCH curs INTO puntero;
SET @slt = CONCAT( 'SELECT nombre,valor INTO var1,var2 FROM wg_datos WHERE id =',puntero,'and nombre NOT LIKE "%descripcion%" ' );
PREPARE stmt FROM @slt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @query = CONCAT('INSERT INTO wg_init(nombre,valor) VALUES (',var1,',',var2,' ) ');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
UNTIL bdone END REPEAT;
CLOSE curs;
END
//
delimiter ;
CALL systm();
程序很简单,接下来要做的就是:
首先,创建一个表,之后,另一个查询通过游标的选择获取id,对于每一行,它从获取游标获取的id中选择(nombre,valor)并在新的中执行插入表与之前获得的值。这很简单,但是 mysql 向我发送了这样的错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near 'DECLARE curs CURSOR FOR SELECT `nombre` FROM `wg_datos`;
DECLARE CONT' at line 15
我已经尝试执行查询:
SELECT nombre FROM wg_datos
并且工作正常。
谁能帮帮我?
最佳答案
首先,我不明白为什么你需要一个游标循环来处理集合 RBAR(逐行痛苦),为什么你不一次性完成这个。
再一次,不清楚为什么要从 wg_datos
获取 nombre
,然后在与 id
的相等谓词中使用该值专栏。
nombre
的值被提取到 VARCHAR(5) 变量中。我们没有看到 id
的数据类型在 wg_datos
中。
不清楚这个存储过程应该实现什么,我认为问题比 DECLARE 语句顺序的语法问题要深得多。
如果我们执行游标循环,并将 nombre
的值提取到 VARCHAR(5) 中,然后使用该值与 id
列进行比较。 .. 如果返回多行,则 SELECT ... INTO ... 将抛出错误...
这一切看起来都很奇怪。看起来该过程将要处理一组类似于查询返回的集合,如下所示:
SELECT v.nombre
, v.valor
FROM wg_datos i
JOIN wg_datos v
ON v.id = SUBSTRING(i.nombre,1,5)
AND v.nombre NOT LIKE '%descripcion%'
当然,与该过程的不同之处在于,如果 SELECT ... INTO ...
没有返回行,该过程仍将处理 INSERT
声明。
很奇怪。
除了奇怪的代码之外,我不知道这个过程实际上应该完成什么。
如果目的是简单地将行从 wg_datos
复制到 wg_init
,排除在 nombre 中包含字符串“descripcion”的行,并分配新的 auto_increment id
wg_init 中行的值...
CREATE PROCEDURE systm()
BEGIN
SET @query = CONCAT('CREATE TABLE IF NOT EXISTS `wg_init` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`nombre` varchar(200) NOT NULL,
`valor` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
INSERT INTO wg_init(nombre,valor)
SELECT d.nombre
, d.valor
FROM wg_datos d
WHERE d.nombre NOT LIKE '%descripcion%'
;
END$$
DELIMITER ;
关于mysql - 错误声明游标mysql存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39352351/
我正在尝试使用游标遍历表: DEClARE @ProjectOID as nvarchar (100) DECLARE @TaskOID as nvarchar (100) DECLARE TaskO
使用 JOprionPane 时,光标出现了一些问题。我将光标设置到 pharent 框架,然后使用这个显示一个对话框: Object[] possibilities = {"ham", "spam"
我想将数据从一个表(原始数据,所有列都是 VARCHAR)复制到另一个表(使用相应的列格式进行格式化)。 为了将数据从 rawdata 表复制到 formatted 表中,我使用游标来识别受影响的行。
我先走了 我 100% 属于集合运算阵营。但是当设置逻辑时会发生什么在整个所需的输入域上进行检索会导致如此大的检索,以至于查询显着减慢,变得缓慢,或者基本上需要无限的时间? 在这种情况下,我将使用可能
为什么我不能这样做?我想从 TABLEA 中搜索大于光标值的最接近的值,对两者执行平均函数并将结果放入 test3 中。我收到错误代码 1054 未知列“Xnearest in 'field list
我希望以下存储例程返回一系列行,但它只返回 1: CREATE PROCEDURE example() BEGIN DECLARE current_id INT;
我有一张代表患者体检的表,它有检查 ID 和患者 ID。 我想逐行浏览表格并获取每个患者 ID 并比较其不同的咨询,看看它是否被视为“new_attack”。我正在处理疟疾疾病,我们认为每个在过去 6
如文档所述here ,我需要声明一个在打开时接受参数的游标。 我的查询类似于: DECLARE cur CURSOR (argName character varying) FOR SELECT *
我正在尝试使用 PostgreSQL 学习基本游标。这是我的脚本: DECLARE cur_employees CURSOR FOR SELECT * FROM employee CLOS
*DELIMITER // create procedure test(OUT l_out INT) begin DECLARE done INT DEFAULT FALSE; declare l_s
来自 psycopg2 文档: When a database query is executed, the Psycopg cursor usually fetches all the record
我正在使用 while 循环遍历游标,然后输出数据库中每个点的经度和纬度值。 出于某种原因,它没有返回光标中的最后一组(或第一个取决于我是否使用 Cursor.MoveToLast)经度和纬度值。 这
不知道有没有人试过全新的PHPStorm 4 , 但我遇到了这个新版本的问题,而我以前的主要版本 (PHPStorm 3) 没有。 基本上,当我单击代码 View 空白处的任意位置时,光标会设置在该位
mysql的存储过程、游标 、事务实例详解 下面是自己曾经编写过的mysql数据库存储过程,留作存档,以后用到的时候拿来参考。 其中,涉及到了存储过程、游标(双层循环)、事务。 【说明】:代码
Mysql的存储过程是从版本5才开始支持的,所以目前一般使用的都可以用到存储过程。今天分享下自己对于Mysql存储过程的认识与了解。 一些简单的调用以及语法规则这里就不在赘述,网上有许多例子。这里
我正在使用 SQL Server,我有一个包含 3 列(时间序列)的表 data ,带日期,hour开始,AwardStatus . 大部分奖励状态是随机生成的。有两种选择,授予或未授予。 但是,业务
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
Why am getting duplicate records ? pls correct me.Thanks in Advance. declare clazzes_rec clazzes%r
Why am getting duplicate records ? pls correct me.Thanks in Advance. declare clazzes_rec clazzes%r
我需要在数据表中设置一个非唯一标识符。这在组内是连续的,即。对于每个组,ID 应从 1 开始,并以 1 为增量递增,直到该组的最后一行。 下表对此进行了说明。 “新 ID”是我需要填充的列。 Uniq
我是一名优秀的程序员,十分优秀!