【发布时间】:2015-04-28 00:00:32
【问题描述】:
我的程序似乎有问题。它用于搜索,它正确地进行了搜索,但多次返回相同的答案,以至于我得到内存耗尽的致命错误。这是我的代码:
FUNCTION pet_search(PETTYPE in VARCHAR2, BREED in VARCHAR2, COLOR in VARCHAR2, PETSIZE in VARCHAR2, TS in VARCHAR2, ENERGY in VARCHAR2, SPACE in VARCHAR2)
RETURN SYS_REFCURSOR
IS
pet_search_result SYS_REFCURSOR;
type_id NUMBER;
breed_id NUMBER;
color_id NUMBER;
size_id NUMBER;
TS_id NUMBER;
energy_id NUMBER;
space_id NUMBER;
BEGIN
select TP.pet_type_code into type_id
from dbadmin.petType TP
where TP.pet_type_name = PETTYPE;
select B.pet_race_code into breed_id
from dbadmin.petRace B
where B.pet_race_name = BREED;
select PC.pet_color_code into color_id
from dbadmin.PetColor PC
where PC.pet_color = COLOR;
select PS.pet_size_code into size_id
from dbadmin.PetSize PS
where PS.pet_size = PETSIZE;
select LS.pet_learn_code into TS_id
from dbadmin.petlearningskill LS
where LS.pet_learn_skill = TS;
select EN.pet_energy_code into energy_id
from dbadmin.petEnergy EN
where EN.pet_energy_level = ENERGY;
select SP.pet_space_code into space_id
from dbadmin.petSpace SP
where SP.pet_space = SPACE;
OPEN pet_search_result FOR select pet_type_name, pet_race_name, pet_cond_name, pet_energy_level, pet_learn_skill, vet_name, person_name, petlocation, petnotes, petabandondescription, pet_space, pet_treatment, pet_color, pet_sickness_name, pet_med_name
from pet, pettype, petrace, petCondition, petSize,petEnergy, petlearningskill, veterinary, person, petSpace, pettreatments, petcolor, petsickness, petmedicine
WHERE pettype.pet_type_code = type_id
AND petrace.pet_race_code = breed_id
AND pet.pet_color_code = color_id
AND pet.pet_size_code = size_id
AND pet.pet_learn_code = TS_id
AND pet.pet_energy_code = energy_id
AND pet.petspace_id = space_id;
RETURN pet_search_result;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN null;
END;
END pet_search_package;
你能看出我的错误吗? 任何建议将不胜感激
【问题讨论】:
-
您在没有正确连接条件的情况下连接 14 个表。再次检查您的光标查询。总之,你只提供了pet、pettype和petreace表的where条件,其他11个表呢?
标签: php sql database oracle procedure