Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранимые процедуры - возвращение значения / 4 сообщений из 4, страница 1 из 1
26.06.2014, 23:28:51
    #38681337
dt88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры - возвращение значения
Всем привет!
Вот начал изучать хранимые процедуры, сделал простую процедуру вставки с двумя IN параметрами - всё получилось:
Код: sql
1.
2.
3.
CREATE DEFINER=`root`@`localhost` PROCEDURE `add_company`(IN `company_name` TEXT, IN `inn` TEXT)
    NO SQL
INSERT INTO companies(`name`, `inn`) VALUES(company_name, inn);



Далее - хотелось бы получить ID записи, созданный при вставке, поэтому я создал ещё один параметр OUT, но процедуру не сохраняет и ругается, код примерно такой получается:
Код: sql
1.
2.
3.
4.
CREATE DEFINER=`root`@`localhost` PROCEDURE `add_company`(IN `company_name` TEXT, IN `inn` TEXT, OUT `last_id` INT)
    NO SQL
INSERT INTO companies(`name`, `inn`) VALUES(company_name, inn);
SELECT LAST_INSERT_ID();



Что я не правильно делаю? Все мануалы, которые удалось найти - приводят примеры только с IN параметрами, или только с OUT параметрами. Нигде нет комбинации.

Я бы хотел делать что-то вроде
SELECT my_procedure(par1,par2);
чтобы произошла вставка и получить ID.


Заранее большое спасибо!
...
Рейтинг: 0 / 0
27.06.2014, 09:22:05
    #38681451
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры - возвращение значения
Код: sql
1.
2.
CALL add_company('Рога и копыта', '1234567890', @new_id);
SELECT @new_id;
...
Рейтинг: 0 / 0
27.06.2014, 11:58:25
    #38681666
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры - возвращение значения
Akina
Код: sql
1.
2.
CALL add_company('Рога и копыта', '1234567890', @new_id);
SELECT @new_id;



вариант через ОУТ.

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

тоесть если процедура test() содержит

begin
select '100';
end

то запросы к базе вернут идентичный результат.

1
select '100';

2
call test();


через АУТ более верно, написал о другом варианте только потому, что автор явно чтото читал о этом, поэтому и наворотил два метода в один.
...
Рейтинг: 0 / 0
27.06.2014, 13:11:23
    #38681788
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры - возвращение значения
alex564657498765453 , я просто показал ТС-у, как можно забрать результат из OUT параметра. Ибо мануал он прочитать, походу, не в состоянии. Писатель, понимаешь...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Хранимые процедуры - возвращение значения / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]