0
편집 : 이제 코드를 변경했습니다.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;
오류없이 실행되지만 행은 모두 비어 있습니까? 내가 잘못한 것을 보여줄 수 있습니까? 여기
사용자가 다음과 같은 개체 관계도 (ERD) 및 질문 /* (나) 계산하고 추정 (즉, 이전의 날짜에서 주어진 작업의 표준 비율을 사용하여 전체 비용을 반환 추정 시간에 더 이상의 변화가 이루어졌다. 코드 스크립트를 각 테스트 문에서 출력의 각 기능 + '스크린 샷'을 테스트하는 SELECT 문을 포함. */
함수 내에있는 쿼리를 실행하십시오. 힌트 : 왜 '데'? – Aleksej
나는 첫 번째 task_history_id가 1과 같을 것이라고 가정 했으므로, 추가 된 시간보다 먼저 첫 번째 작업 만 가져 오면 새로운 ID가 만들어져 이전 시간을 볼 수 있습니다. 첫 번째 예상 시간이 필요하므로 hourly_rate로 시간을 계산하십시오. –