Я смущен, признав, что это абсолютно нужный вопрос, но я принимаю прибежище в том, что я пришел из мира T-SQL, и это совершенно новая территория для меняВыбор PL/SQL возвращает более одной строки
Это простая таблица, я с 4 записей только
ContractorID ProjectID Стоимость
1 100 1000
2 100 800
3 200 1005
4 300 2000
Это моя PL функция SQL, которая должна взять подрядчика и идентификатор проекта и возвращает количество часов (10 в этом случай)
create or replace FUNCTION GetCost(contractor_ID IN NUMBER,
project_ID in NUMBER)
RETURN NUMBER
IS
ContractorCost NUMBER;
BEGIN
Select Cost INTO ContractorCost
from Contractor_Project_Table
where ContractorID= contractor_ID and ProjectID =project_ID ;
return ContractorCost;
END;
Но затем с помощью
select GetCost(1,100) from Contractor_Project_Table;
Это возвращает ту же строку в 4 раза
1000 1000 1000 1000
Что здесь не так? Почему это возвращение 4 строки вместо 1
Спасибо за
'getCost()' вызывается один раз ** для каждой строки ** в 'Contractor_Project_Table', поэтому вы получаете столько строк, сколько содержится в этой таблице. Почему бы вам просто не использовать регулярное соединение - это будет намного эффективнее, чем использование этой функции. –