Size: a a a

2020 December 02

S

Syntax Highlight Bot in MySQL
====================================================
источник

IZ

Ilia Zviagin in MySQL
Вячеслав Ракицкий


   set @parent = JSON_SET('{}',
                   '$.idnode', cast(@idgrmp as CHAR),
                   '$.name', @parentMpName,
                   '$.code',  @parentMpCode,
                   '$.state', 'unknown',
                   '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select JSON_OBJECT('parent', cast(@parent as JSON), 'childs', ifnull(cast(@childs as JSON), cast('[]' as JSON))) `json`;
end if;

END //

Как это сделать лучше я знаю, меня интересует само поведение записи в переменную.
Это присваивание же под условием, внутри IF
источник

ВР

Вячеслав Ракицкий... in MySQL
Ilia Zviagin
Это присваивание же под условием, внутри IF
да
источник

IZ

Ilia Zviagin in MySQL
Ну, вот и не срабатывает, видимо
источник

IZ

Ilia Zviagin in MySQL
И как ты проверяешь, что переменная не меняется?
источник

ВР

Вячеслав Ракицкий... in MySQL
Ilia Zviagin
Ну, вот и не срабатывает, видимо
не срабатывает другое присваивание, где @pr записывается. Причем только на версии 8.0.22.
источник

IZ

Ilia Zviagin in MySQL
Вячеслав Ракицкий
не срабатывает другое присваивание, где @pr записывается. Причем только на версии 8.0.22.
Значит, условие это не срабатывает, той ветки, где присваивание.
источник

ВР

Вячеслав Ракицкий... in MySQL
Ilia Zviagin
Значит, условие это не срабатывает, той ветки, где присваивание.
Условие срабатывает, это конечно было проверено до того как задать вопрос
источник

IZ

Ilia Zviagin in MySQL
Вячеслав Ракицкий
Условие срабатывает, это конечно было проверено до того как задать вопрос
я бы более вероятно поверил тому, что условие НЕ срабатывает.
источник

ВР

Вячеслав Ракицкий... in MySQL
Ilia Zviagin
я бы более вероятно поверил тому, что условие НЕ срабатывает.
Ну ваше право верить)
источник

ВР

Вячеслав Ракицкий... in MySQL
Вообще я писал это, в надежде что кто-то с таким сталкивался и просто предупредить что такое есть и лучше использовать declare
источник

IZ

Ilia Zviagin in MySQL
Вячеслав Ракицкий
Вообще я писал это, в надежде что кто-то с таким сталкивался и просто предупредить что такое есть и лучше использовать declare
Так а если использовать DECLARE работает как надо?
источник

ВР

Вячеслав Ракицкий... in MySQL
Ilia Zviagin
Так а если использовать DECLARE работает как надо?
да
источник

IZ

Ilia Zviagin in MySQL
Ну так может тогда и тебе использовать?
источник

ВР

Вячеслав Ракицкий... in MySQL
Ilia Zviagin
Ну так может тогда и тебе использовать?
я их и использую)
источник

ВР

Вячеслав Ракицкий... in MySQL
просто были старые процедуры, которые были мной молодым написаны через @variable и они поломались на версии 8.0.22
источник

IZ

Ilia Zviagin in MySQL
Я просто лично сам не писал почти процедуры на MySQL, а когда писал (там было что-то типа 5.5-5.6) там были проблемки в процедурах, с хендлерами ошибок.
источник

IZ

Ilia Zviagin in MySQL
Вполне возможно, что если писать так

set @parentIdmp = null;

то это считается не локальной , а сессионной переменной. Там у MySQL сложновато с этим...
источник

ВР

Вячеслав Ракицкий... in MySQL
Ilia Zviagin
Вполне возможно, что если писать так

set @parentIdmp = null;

то это считается не локальной , а сессионной переменной. Там у MySQL сложновато с этим...
да, считается сессионной. Можно вот так проверить
select * from performance_schema.user_variables_by_thread where thread_id = ???;
источник

S

Syntax Highlight Bot in MySQL
Вячеслав Ракицкий
да, считается сессионной. Можно вот так проверить
select * from performance_schema.user_variables_by_thread where thread_id = ???;
источник