Хранимая процедура MySQL не вставляет данные - PullRequest
0 голосов
/ 10 мая 2019

На самом деле я пытаюсь вставить некоторые данные в таблицу с помощью курсора, и я не получаю ошибку.Он просто говорит:

Query executed OK, 0 rows affected.

Я пытаюсь получить данные из каждого поля таблицы testdatabase.wp_posts p и вставить их в существующую таблицу `testdatabase.wp_postmeta.

Мой синтаксис:

DROP PROCEDURE IF EXISTS add_authors_to_prod;
    DELIMITER $$
CREATE PROCEDURE add_authors_to_prod()
    BEGIN
        DECLARE  v_post_id        INT;
        DECLARE  v_author_id      INT;
        DECLARE  v_last_author    INT DEFAULT 0;
        DECLARE  str              VARCHAR(500);
        DECLARE  v_first_id       INT DEFAULT 10916;

        DECLARE author_csr CURSOR FOR
        SELECT n.nid, p.id FROM testdatabase.wp_posts p
            JOIN drupaltest.srmaif_field_data_field_auther_list auth ON auth.entity_id = p.id
            JOIN drupaltest.node_field_data n ON auth.field_auther_list_nid = n.nid
            ORDER BY p.id;

        DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_last_author = 1;

        START TRANSACTION;
            OPEN author_csr;
                author_loop:LOOP
                    FETCH author_csr INTO v_author_id, v_post_id;
                    IF  v_last_author THEN
                        SET str = CONCAT(str, '}');
                        LEAVE author_loop;
                    END IF;

                    IF v_first_id <> v_post_id THEN
                        SET v_first_id = v_post_id;
                        SET str = CONCAT(str, '}');
                        INSERT INTO testdatabase.wp_postmeta (post_id, meta_key, meta_value)
                             VALUES(v_post_id, 'authors', CONCAT(str, v_author_id));
                        SET str = 'a:2:{';
                    ELSE
                        SET str = CONCAT(str,'i:', v_author_id, ';s:5:\"', v_author_id, '\";');
                    END IF;
                END LOOP author_loop;
            CLOSE author_csr;
            SET v_last_author=0;
END$$
DELIMITER ;

CALL add_authors_to_prod()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...