Итак, я искал все места, пытаясь увидеть, как я могу вызвать функцию внутри хранимой процедуры, и вот этот пример нашел здесь: http://forums.mysql.com/read.php?98,175470,175476#msg-175476.MySQL вызывает хранимую процедуру внутри функции
Это помог мне структурировать функции для вызова хранимой процедуры, но я получаю эту ошибку:
16:17:51 select regionUtilization(1,2) LIMIT 0, 1000 Error Code: 1415. Not allowed to return a result set from a function 0.000 sec
То, что я пытаюсь сделать, это вызвать следующую хранимую процедуру и доступ к переменному OUT. Затем сравните это с введенным целым числом сравнения.
drop procedure if exists select_employeesByRegion_proc;
delimiter //
create procedure select_employeesByRegion_proc
(in search int, out result int)
begin
select t1.emp_id from (
select employees.emp_id from branch
inner join department
on department.br_id = branch.br_id
inner join employees
on employees.dep_id = department.dep_id
where branch.reg_id = search) as t1;
set result:=FOUND_ROWS();
end //
delimiter ;
Ниже приведена функция, которую я в настоящее время имею.
drop function if exists regionUtilization;
delimiter //
create function regionUtilization(search int, compare int)
returns boolean
begin
DECLARE temp int;
call select_employeesByRegion_proc(search, temp);
if temp >= compare then
return true;
else
return false;
end if;
end //
delimiter ;
Я также посмотрел в отделяя два аспекта хранимой процедуры в отдельные процедуры, имея один счет и другие результаты возвращения, однако это будет по-прежнему сначала необходимо процедура, чтобы выбрать некоторые данные, которые могли бы привести та же ошибка, что и я.
Любые предложения о том, как обойти ошибку набора результатов? Я не возвращаю результат, я просто использую этот набор результатов, чтобы выбрать, следует ли возвращать true или false в моей функции. Заранее спасибо!
Процедура должна использовать курсор для обработки результатов запроса, чтобы он не возвращал результаты запроса. – Barmar