Bu nedenle, saklı bir yordamın içinde bir işlevi nasıl arayabileceğimi görmeye çalışırken her yere baktım ve buradaki örnekte şu adresi buldum: http://forums.mysql.com/read.php?98,175470,175476#msg-175476.MySQL Bir İşlev İçinde Depolanmış Yordamı Çağır
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
Ne yapmaya çalışıyorum saklı yordamını çağırmak ve ÇIKIŞ değişken erişmek geçerli:
Bu
ancak bu hatayı almaya devam me yordamını aramak için benim işlevi yapısı yardımcı oldu. Ardından, girilen karşılaştırmalı tam sayıyla karşılaştırın.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 ;
Aşağıda, şu anda sahip olduğum işlev var.
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 ;
Ben de bir sayımı ve diğer dönüş sonuçlarını alarak ayrı prosedürler içine saklı yordam iki boyutunu dışarı ayıran içine baktım, ancak bu hala ilk neden olacak bazı verileri seçmek için prosedürü gerektirir zaten aldığımla aynı hata.
Sonuç kümesi hatası nasıl çözüleceğine dair herhangi bir öneriniz var mı? Sonuç kümesini iade etmiyorum, yalnızca bu sonuç kümesini işlevimde doğru veya yanlış döndürüp döndürmeyeceğimi seçmek için kullanıyorum. Şimdiden teşekkürler!
Yordam, sorgunun sonuçlarını işlemek için bir imleç kullanmalıdır, böylece sorgu sonuçlarını döndürmez. – Barmar