EDIT: я изменил свой код сейчас.Проблема с функцией Oracle iSQL
У меня проблема с моей функцией. Я не получаю ошибок при создании функции, и я могу запустить базовую версию функции, которую я сделал без проблем, но когда я вызываю всю функцию, я получаю пустые строки.
эта версия работает
SELECT SUM(t.estimated_hours*c.hrly_charge_rate)
FROM task t, task_history ta, task_type tt, charge_grade c
WHERE t.task_id = ta.task_id
AND tt.task_type_no = t.task_type_no
AND c.grade_no = tt.grade_no
AND ta.task_history_id = 1;
, но это не работает строка просто пустая ???
SHOW ERRORS
CREATE OR REPLACE FUNCTION total_cost (tn task.task_id%TYPE)
RETURN NUMBER IS
cost_var NUMBER;
BEGIN
SELECT SUM(t.estimated_hours*c.hrly_charge_rate)
INTO cost_var
FROM task t, task_history ta, task_type tt, charge_grade c
WHERE t.task_id = ta.task_id
AND tt.task_type_no = t.task_type_no
AND c.grade_no = tt.grade_no
AND t.task_type_no = tn
AND ta.task_history_id = 1;
RETURN cost_var;
END;
/
-- my call select statment
SELECT total_cost(t.task_id) AS task_cost
FROM task t;
он работает без ошибок, но все строки пустые? Может ли кто-нибудь показать мне, что я сделал неправильно, пожалуйста.
здесь ли Entity Relationship Diagram (ERD) И ВОПРОС /* (б), чтобы вычислить и вернуть полную стоимость, используя стандартные ставки данной задачи на дату оценки (т.е. до были сделаны какие-либо дальнейшие изменения расчетного часа. кода сценариев, в том числе ЗЕЬЕСТА для проверки каждого функции + «экрана» на выходе из каждого оператора проверки. */
Попробуйте выполнить запрос, который находится внутри вашей функции. подсказка: зачем «иметь»? – Aleksej
Я предположил, что у меня будет только первая задача task_history_id, равная 1, так что я получаю первую задачу перед любыми добавленными часами, которые делают новый идентификатор, чтобы вы могли видеть предыдущие часы. так как мне нужны первые расчетные часы, а затем время, которое на hourly_rate –