Разделить запятую строкой со значениями массива - PullRequest
0 голосов
/ 31 мая 2018

Я хотел заменить данные из выпуска db на тестирование db префиксом (каждое хранилище в массиве storeList).

Я получаю сообщение об ошибке типа "Неизвестная системная переменная 'store'"

Но я не знаю, почему возникает эта ошибка.

DELIMITER
CREATE PROCEDURE `replace_release_to_test_db`(baseUrl VARCHAR(255),     substituteDomain VARCHAR(255), IN storeList VARCHAR(255))
BEGIN
   DECLARE pos int;
   SET storeList = LTRIM(RTRIM(storeList))+ ',';
   SET pos = SUBSTRING_INDEX(storeList,',', 1);
        WHILE pos > 0 do
            SET store = LEFT(storeList, pos - 1);
            IF store <> '' THEN
                SET oldDomain = CONCAT(store,".",baseUrl);
                SET newDomain = CONCAT(substituteDomain,"-",store,".",baseUrl);
                UPDATE core_config_data SET value = REPLACE(value, oldDomain, newDomain);
            END IF
            SET storeList = RIGHT(storeList, LEN(storeList) - pos);
            SET pos = SUBSTRING_INDEX(storeList,',', 1);
        END WHILE;

        UPDATE core_config_data SET value = REPLACE(value, CONCAT("http://",baseUrl), CONCAT("http://"substituteDomain,".",baseUrl));
        UPDATE core_config_data SET value = REPLACE(value, CONCAT("https://",baseUrl), CONCAT("https://"substituteDomain,".",baseUrl));

        SELECT * FROM core_config_data WHERE value LIKE '%abc.kr%';
END
DELIMITER;

CALL replace_release_to_test_db("abc.kr","test", "my,sg,ph,id,th,us,my-mobile,sg-mobile,ph-mobile,id-mobile,th-mobile,us-mobile")

1 Ответ

0 голосов
/ 31 мая 2018

У вас есть SET store = LEFT(storeList, pos - 1); IF store ... и т. Д.) , но вы не объявили переменную с именем store.

...