SQL процедура печати курсора - PullRequest
1 голос
/ 02 апреля 2020

У меня есть sql процедура, которая имеет этот оператор объявления для курсора

DECLARE cur1 CURSOR FOR  SELECT count(value1), value1
FROM someDB.table1
INNER JOIN someDB.table2 ON table1.Id=table2.Id and 
A_code = input_code1;
AND B_code = input_code2
GROUP BY value1
  ORDER BY count(value1) desc
LIMIT 5;


OPEN cur1;
read_loop: LOOP 
FETCh cur1 INTO value2,value1;
set value = CONCAT(value2,' ',value1);

  select 'loop start';
  select value;
  -- for now, I'm just trying to print but here I'll have an insert statement 

 IF done THEN
      LEAVE read_loop;
    END IF;

оператор выбора действительно возвращает значения, но когда я пытаюсь вставить значения в таблицу, он говорит, что значение1 не может быть NULL, значение не равно NULL, когда я просто запускаю оператор выбора, не уверенный, почему это значение устанавливает NULL в курсоре. Может кто-нибудь помочь, что мне не хватает в этом

1 Ответ

0 голосов
/ 03 апреля 2020

Проблема заключалась в том, что я объявил имя переменной для курсора так же, как имя столбца в таблице, поэтому я начал отладку и увидел, что значения для курсора стали нулевыми, я начал изменять имя переменных, и это исправило проблему. Похоже, что MySQL имеет конфликт, в котором имя переменной не может совпадать с именем столбца таблицы.

...