В настоящее время я работаю с пакетным процессом PL / SQL в Oracle, в котором мне нужно обрабатывать данные, извлеченные из файла.
В настоящее время мне удалось сохранить эту информацию в нескольких временных таблицах, но онитакже ссылка на постоянные таблицы.
Для моей процедуры PL / SQL я определил курсор следующим образом:
CURSOR myCursor is
SELECT A.field1, A.field2..... C.fieldN
FROM A JOIN .... JOIN C;
К этому курсору я применю оператор FOR ALL
,Мой алгоритм требует, чтобы я провел некоторую проверку данных.Разные функции проверки требуют различного подмножества данных на входе, которые я могу найти в типе записи, возвращаемой курсором.
Для простоты кодирования я бы хотел, чтобы ВСЕ функции проверки принимались и возвращались (втораяфактически возможно по спецификациям системы) соответственно аргумент того же типа.
Т.е..
FUNCTION CheckA(param1 IN IN_RECORD_TYPE) RETURN VALIDATION_OUTCOME;
FUNCTION CheckB(param1 IN IN_RECORD_TYPE) RETURN VALIDATION_OUTCOME;
FUNCTION CheckC(param1 IN IN_RECORD_TYPE) RETURN VALIDATION_OUTCOME;
FUNCTION CheckC(param1 IN IN_RECORD_TYPE) RETURN VALIDATION_OUTCOME;
Причина этого заключается в том, что я могу сохранить имя функции в таблице рабочего процесса и получить конкретныйфункция, вызываемая как простое соединение :):)
Мой прямой вопрос
Как мне объявить IN_RECORD_TYPE
, чтобы сопоставить тип строки, возвращаемый указанным выше курсором, с наименьшим кодом?
Я знаю, что могу определить пользовательский тип записи, соответствующий результату курсора, затем построить поле входного объекта по полю.Но это не кажется хорошей практикой.CURSOR
s не определяют свойство %TYPE
.
Что я могу для этого сделать?