@ Тони Эндрюс, спасибо за это, это дало мне лучшее представление о том, где я ошибаюсь.Все еще возникают проблемы - вот сокращенная версия моего процесса.Это немного сложно, поскольку он выбирает все поля из подзапроса и 2 других значения:
open p_fof_sec_refcur for
SELECT *
FROM(
SELECT securities.*, rownum rnum, v_total_count
FROM
(
SELECT
CFS.CAE_SEC_ID,
CFS.FM_SEC_CODE,
...
FROM
CAEDBO.CAE_FOF_SECURITY CFS
INNER JOIN caedbo.CAE_DATA_SET_ELEMENT CDSE_STAT
ON (CDSE_STAT.DATA_SET_ELEMENT_ID = CFS.APPR_STATUS)
...
WHERE APPR_STATUS = NVL(p_appr_status, APPR_STATUS)
...
)securities
)
WHERE rnum between v_pgStart and v_pgEnd;
Я явно определил структуру вывода, как показано ниже, чтобы соответствовать полям возврата из процедуры, но я все еще получаюошибка:
v_Return sys_refcursor;
type t_row is record (CAE_SEC_ID NUMBER,FM_SEC_CODE VARCHAR2(7),...rnum number, v_total_count number);
v_rec t_row;
Я получаю ошибку:
ORA-06504: PL/SQL: Return types of Result Set variables or query do not match
ORA-06512: at line 45
Мне просто интересно, что часть "rownum rnum, v_total_count" подвела меня.Я почти уверен, что все остальные поля в структуре вывода правильные, поскольку я скопировал их непосредственно из процедуры.