mysql - MySQL存储过程不插入数据
问题描述
实际上,我正在尝试使用游标将一些数据插入表中,并且没有出现错误。它只是说:
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()
解决方案
推荐阅读
- postgresql - 如何锁定多工人速率限制的行?
- c - 我正在尝试使用 COM Moniker 抑制 UAC 提示
- python - SymPy 用符号代替向量
- laravel - 有没有办法在没有数据的情况下返回 0 几个月?
- mongodb - Mongo Spring JPA 在 findAll() 调用中给出 IndexOutOfBoundsException
- python - Python 库安装但无法导入
- javascript - 鼠标悬停时如何获取DOM列表?
- php - 在 Powershell 中运行 PHP 脚本会一直打开 NotePad++ 而不是执行 PHP 脚本
- python - NameError:未定义名称“驱动程序”
- docker - Docker - 数据库容器的最佳实践?