我正在编写一个程序,该程序获取一个数据表以映射一个字段并在另一个表中插入/更新。
我的问题是,如果映射函数找不到任何匹配项,则光标将在第一次迭代后停止,而不会引发任何错误。
这是我的功能:
BEGIN
DECLARE mapped_name VARCHAR(255);
SELECT mapped_field INTO mapped_name
FROM mapping_civility
WHERE original_field = nameVar
LIMIT 1;
IF mapped_name IS NULL THEN
RETURN 'INDEFINI';
ELSE
RETURN mapped_name;
END IF;
END
Run Code Online (Sandbox Code Playgroud)
通过测试,我发现如果我的映射表中有一个对应的字段,它可以工作,但是如果SELECT由于找不到映射的字段而返回NULL值,它将在第一次迭代时停止游标。
然后我在另一个数据库,另一个服务器上进行了尝试,一切都正常,所以可能是配置问题?两者都有字符集“ latin1-cp1252西欧”,排序规则为“ latin1_swedish_ci”。
这是我的过程代码:
BLOCK1: BEGIN
DECLARE no_more_rows1 INT;
DECLARE my_name VARCHAR(255);
DECLARE civility VARCHAR(255);
DECLARE curseur1 CURSOR FOR
SELECT `name`
FROM source;
DECLARE CONTINUE handler FOR NOT FOUND SET no_more_rows1 = TRUE;
OPEN curseur1;
LOOP1: LOOP
FETCH curseur1 INTO my_name;
IF no_more_rows1 THEN
CLOSE curseur1;
LEAVE …Run Code Online (Sandbox Code Playgroud)