0
我需要比较一个表中的两行来更新lineB中的字段,这些字段在lineA中填写。我的问题是,我需要比较的两个字段只是部分匹配。所以我不能只通过LIKE比较来执行更新语句。环游标匹配字段
我需要比较的字段包含生成的文件名。 这个名字在表格中一次存在两次,没有这个字母,就没有“Bestand-”一词。 为了使用来自lineA的信息更新lineB,我需要匹配这两个名字。
该表的示意图如下所示。
Id DateinameMarbilder PfadNeu
1 Bestand-one night
2 Bestand-two evening
3 Bestand-three morning
4 Bestand-four noon
5 one NULL
6 two NULL
7 three NULL
8 four NULL
这些只是我需要阅读的两个字段,表格要大得多。
我试图通过使用游标和循环来实现。 我得到一个语法错误的第四行至极我似乎无法解决。这似乎是一个声明值的问题。 除此之外,我不太清楚如何使第二个游标循环遍历所有行以找到匹配字段,然后执行更新。不幸的是,表格没有组织,所以我不能只比较下一行和之前的行。
这里是查询我想:
CREATE PROCEDURE curing()
BEGIN
DECLARE tester INT DEFAULT FALSE;
DECLARE name CHAR(50);
DECLARE tempColName CHAR(50);
DECLARE tempCol CHAR(30);
DECLARE schreiber_cursor1 CURSOR FOR
SELECT DateinameMarbilder FROM marbilder;
DECLARE schreiber_cursor2 CURSOR FOR
SELECT DateinameMarbilder FROM marbilder;
DECLARE update_cursor CURSOR FOR
SELECT PfadNeu FROM marbilder;
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET tester = TRUE;
OPEN schreiber_cursor1;
OPEN schreiber_cursor2;
OPEN update_cursor;
get_name: LOOP
FETCH schreiber_cursor1 INTO name;
FETCH schreiber_cursor2 INTO TempColName;
FETCH update_cursor INTO tempcol;
IF tester THEN
LEAVE get_name;
IF name LIKE %TempColName THEN
UPDATE marbilder SET 'PfadNeu'=update_cursor ;
ELSE FETCH [[NEXT] FROM] schreiber_cursor2 INTO TempColName;
CLOSE schreiber_cursor;
CLOSE update_cursor;
END;
它似乎工作得很好。谢谢! 只是%之前的逗号是一个错字。 – Jeanne2130