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