Какова цель OUT
в хранимых процедурах MySQL?Какова цель OUT в хранимых процедурах MySQL?
Если у меня есть простая хранимая процедура, которая выглядит следующим образом:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_routine`(
IN iID int
)
BEGIN
select * from table1 where id = iID;
END
Это дало бы мне все результаты, я хочу, запустив:
call new_routine(7);
Так почему я хочу/необходимость используйте OUT
?
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_routine`(
IN iID int,
OUT vName varchar(100)
)
BEGIN
select name into vName from table1 where id = iID;
END
и назвать его, как этот
call new_routine(7, @name);
select @name;
который даст мне только имя, а не все из строки возвращаются?
Я пробовал Google, но явно не спросил у Google правильный вопрос, чтобы получить четкий ответ.
Так что это CALL-передача, если OUT и INOUT не используются? Разве это не передача значений без использования OUT и INOUT? Например, первая хранимая процедура в моем вопросе не использует OUT или INOUT, но CALL получает обратные значения? Я не понимаю. – oshirowanen