Не выводит оклад из заданной таблицы в созданную колонку, неправильный SELECT И WHERE
В словаре "Должности" нужно добавить дополнительную колонку "Оклад должности". Значение этого поля брать из поля "Сумма" из таблицы ФОТ "оклад" ,и всё это должно быть на действующую на системную дату(нынешнею)
ЧТО ЕСТЬ В НАЛИЧИИ
Есть словарь "Должности"(DOLJNOSTI),в который нужно добавить поле Сумму(SUMM) из таблицы DOLJNOSTFOT(Должности(фонд оплаты труда)).
Также есть в наличии таблица OKLZP(Состав ФОТ.), где в поле NAME надо выбрать значение '1.оклад' и выводить именно те суммы, которые относятся именно к значению NAME='1.оклад'.
Функция скомпилировалась, но ничего не показывает, хотя в значении SUMM нули. Хотя в таблице есть 0.
В коде представленном ниже, я пытаюсь найти номер записи(RN) таблица "Должности (фонд оплаты труда)",с заданным условием что его номера записи совпадают с таблицей 'Должности' и соответствует имени '1.оклад'
КОД ФУНКЦИИ:
create or replace function view_oklad
(
NRN NUMBER
)
RETURN NUMBER
AS
INRN NUMBER;
NUMVAL NUMBER; --- переменная для отбора значений и возвращения из фукнции
BEGIN
INRN:=NRN;
BEGIN
SELECT DJLNFOT.SUMM INTO NUMVAL
FROM
DOLJNOSTFOT DJLNFOT, --- таблица "Должности (фонд оплаты труда)"
DOLJNOSTI DJLN, --- таблица "Должности"
OKLZP OKL, --- таблица "Состав ФОТ", откуда берём точное название вида заработной платы(оклад)
SHTATNDOLJN SHTDJLN ---таблица "штатные должности", откуда надо взять Дата с(DO_ACT_FROM) и Дата по(DO_ACT_TO) для получения системной даты
WHERE
DJLN.RN= INRN
AND DJLN.RN=DJLNFOT.RN
AND OKL.NAME='1. оклад'
AND SHTDJLN.DO_ACT_FROM<=SYSDATE AND (SHTDJLN.DO_ACT_FROM>SYSDATE OR SHTDJLN.DO_ACT_TO IS NULL); ---сравнение системной(текущей даты)
END;
return NUMVAL;
end view_oklad;
Что я не понимаю и почему прошу помощи или объяснения?
Помочь понять мою ошибку при составлении запроса и условий. Все таблицы, которые я перечислил связаны между собой через номер записи RN
Функция компилируется, сообщений об ошибок нет. Колонка создаётся, но самих значений в поле нет.
Вполне возможно, что я неправильно пишу SELECT или сами условия после WHERE.
Если информации недостаточно, то я обновлю свой вопрос.