Я пытаюсь написать сохраненный процесс, который принимает число n и возвращает первые n результатов для данного запроса, блокируя исключительно эти n строк. Я немного новичок в SQL, и у меня возникли сложности с правильным сопоставлением типов данных.
Моя спецификация пакета выглядит следующим образом:
PACKAGE package IS
Type out_result_type is REF CURSOR;
PROCEDURE stored_proc
(in_n IN NUMBER DEFAULT 10,
out_list IN OUT out_result_type);
Затем я определяю курсор в теле процедуры, например:
CURSOR OUT_RESULT_TYPE IS
SELECT a.id
FROM schema.table a
WHERE (some conditions) AND rownum <= in_n;
Чуть позже я пытаюсь извлечь результаты курсора в выходную переменную:
OPEN OUT_RESULT_TYPE;
FETCH OUT_RESULT_TYPE INTO out_list; -- error on this line
CLOSE OUT_RESULT_TYPE;
Но, увы, этот код не компилируется; оракул жалуется, что out_list уже был определен с конфликтующим типом данных. Любая идея, как я могу решить эту проблему? Это сводит меня с ума!
Заранее спасибо.