MySQL游标-插入中间表-2列:1列-设置值,2列-选择值
我在MySQL中编写了一个游标,在中间表MySQL游标-插入中间表-2列:1列-设置值,2列-选择值,mysql,cursor,Mysql,Cursor,我在MySQL中编写了一个游标,在中间表dw\u-code\u-events DELIMITER // CREATE PROCEDURE attended_code_events_table() BEGIN DECLARE done BOOLEAN DEFAULT FALSE; DECLARE coder_ID VARCHAR(40); DECLARE att_code_events CURSOR FOR SELECT 'ID.x' FROM New_Coders_S
dw\u-code\u-events
DELIMITER //
CREATE PROCEDURE attended_code_events_table()
BEGIN
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE coder_ID VARCHAR(40);
DECLARE att_code_events CURSOR
FOR SELECT 'ID.x' FROM New_Coders_Survey_Data
WHERE 'ResourceBlogs' = 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN att_code_events;
REPEAT
FETCH att_code_events INTO coder_ID;
INSERT INTO dw_attended_code_events (code_event_id, coder_id) VALUES(1, coder_ID);
UNTIL done END REPEAT;
CLOSE att_code_events;
END; //
DELIMITER ;
在code\u事件\u id
中,我需要插入id-即“1”,在coder\u id
中,我需要插入来自表New\u Coders\u Survey\u Data的编码器id
我的光标当前正在插入1条记录:
1到第1列
并在第二列中输入NULL
如何更正光标
亲切问候,,
安娜不需要光标。只需使用
SELECT
查询作为INSERT
的数据源即可。使用反勾号可以转义包含特殊字符(如
)的列名,而不是单引号(请参阅)
DECLARE att_code_events CURSOR,用于从新的_Coders_Survey_数据中选择'ID.x',其中'ResourceBlogs'=1代码>-在此代码中,'ID.x'
和'ResourceBlogs'
是字符串文字,而不是列名'ResourceBlogs'=1
为False,游标不返回任何行,FETCH setscoder\u ID
为NULL,并触发处理程序,插入NULL,然后循环中断。如何更正游标?使用反勾号而不是引号。但您尝试实现的操作可以通过一个简单的查询轻松执行,无需过程、光标和其他构造。请运行youzr select query ansee它将显示什么,因为ID.x即使在倒勾中也会显示错误
INSERT INTO dw_attended_code_events (code_event_id, coder_id)
SELECT 1, `ID.x`
FROM FROM New_Coders_Survey_Data
WHERE 'ResourceBlogs' = 1;