Вам необходимо вернуть одно значение:
CREATE DEFINER=`root`@`localhost` PROCEDURE `storedp2`(out shift nvarchar(40))
begin
set shift= (SELECT col_name FROM myblog.computed WHERE id = ?);
-- (single column/single row)
-- set shift = (SELECT col_name FROM myblog.computed WHERE ... LIMIT 1);
end;
Вы не можете присвоить результат SELECT * FROM tab
NVARCHAR(40)
:
scalar := (col1, col2, col3) -- won't work (multiple cols, single row)
scalar := (col1, col2), (col1, col2) -- won't work (multiple cols, multiple rows)
sclara := (col1), (col1) -- won't work (single col, multiple rows)
EDIT:
что мне делать, если я хочу вернуть всю выбранную отправку
CREATE DEFINER=`root`@`localhost` PROCEDURE `storedp2`()
begin
-- some logic
SELECT * FROM myblog.computed;
end
call storedp2 ();
DBFiddle Demo