Сохраненная итерационная процедура не вставляется в таблицу

Я использую две процедуры: одну для определения курсора, а вторую для вставки результатов первой во временную таблицу перед вставкой в ​​окончательную таблицу. Я протестировал свое определение запроса выбора для курсора, и он возвращает те результаты, которые мне нужны; однако я не получаю значений, вставленных во временную таблицу.

Итерационная процедура

CREATE PROCEDURE procIteration ()
BEGIN
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE TaxonName varchar(170);
DECLARE RankID varchar(170);
DECLARE ParentID varchar(170);
DECLARE TaxonID varchar(170);
DECLARE cur CURSOR FOR SELECT child.SciName, RankID, parent.parentID, child.tid FROM taxa child LEFT JOIN (SELECT MAX(parenttid) as parentID, SciName, taxaenumtree.tid FROM taxaenumtree, taxa WHERE taxa.tid = taxaenumtree.tid GROUP BY taxaenumtree.tid) AS parent ON parent.tid = child.tid WHERE rankID = 10;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

OPEN cur;

testLoop: LOOP
    FETCH cur INTO TaxonName, RankID, ParentID, TaxonID;
    IF done THEN 
        LEAVE testLoop;
    END IF;
    CALL taxon_reclamation(TaxonName, RankID, ParentID, TaxonID);
END LOOP testLoop;

CLOSE cur;
END //

Процедура вставки

CREATE PROCEDURE taxon_reclamation (IN TaxonNameIn VARCHAR(170), IN RankIDIn VARCHAR(170), IN ParentIDIn VARCHAR(11), IN TaxonIDIn VARCHAR(170)) 
BEGIN
DECLARE TaxonName varchar(170);
DECLARE RankID varchar(170);
DECLARE ParentID varchar(170); 
DECLARE TaxonID varchar(170);
SET TaxonName = TaxonNameIn;
SET RankID = RankIDIn;
SET TaxonID = TaxonIDIn;
SET ParentID = ParentIDIn;

INSERT INTO taxon_reclamation(TaxonID, FullName, Name, RankID, ParentID, TaxonTreeDefID, TaxonTreeDefItemID)
VALUES (TaxonID, TaxonName, TaxonName, RankID, ParentID, 2, 1);
END //

Я должен получить временную таблицу с названием таксона, идентификатором таксона, родительским идентификатором для этого таксона и его rankID (семейство, род, вид и т. Д.).


person Vaughn Shirey    schedule 10.05.2016    source источник


Ответы (1)


Вам следует изменить имена своих переменных, чтобы они отличались от имен столбцов.

person mrek    schedule 10.05.2016
comment
Привет, @mrek, я изменил их, чтобы было меньше запутать, о какой переменной или столбце я имел в виду, но все равно получил тот же результат без вставки. - person Vaughn Shirey; 10.05.2016
comment
Привет @Vaughn, хорошо (это не только о путанице, это просто вызывает ошибки). Не могли бы вы вставить текущий код? Вы уверены, что изменили имена переменных RankId и ParentId? Нет сообщения об ошибке? Можете ли вы выполнить вручную call taxon_reclamation('test','test', 'test', 'test')? Вставляет ли он эту тестовую строку? - person mrek; 11.05.2016