PLS-00103: обнаружен символ «ВЫБОР» - PullRequest
0 голосов
/ 27 ноября 2018

В настоящее время я пытаюсь открыть курсор условно, но компилятор выпускает PLS-00103: обнаружен символ «SELECT».

CREATE OR REPLACE PROCEDURE proc_faturas_nao_liquidadas(data_inicio IN FATURA.data_emissao%TYPE,
                                                            data_fim    IN FATURA.data_emissao%TYPE)
    IS
  curs_faturas   SYS_REFCURSOR;

  BEGIN
    IF (data_inicio is null or data_fim is null)
    then
      open curs_faturas for (SELECT f.NR_FATURA, f.DATA_EMISSAO, f.VALOR_BASE_PAGAR
                             FROM FATURA f,
                                  PAGAMENTO p
                             where p.NR_FATURA = f.NR_FATURA
                               and ESTADO != 'PAGO'
                             ORDER BY f.DATA_EMISSAO);       
    end if;
  END;

Конечная цель - использовать курсор в цикле для печати строк,Я пробовал, и запрос работает автономно.

1 Ответ

0 голосов
/ 27 ноября 2018

Вам нужно убрать круглые скобки вокруг оператора select, используйте для этого ANSI-92 Стандарт JOIN и лучше преобразовать процедуру в функцию:

CREATE OR REPLACE FUNCTION proc_faturas_nao_liquidadas(
                               data_inicio FATURA.data_emissao%TYPE,
                               data_fim    FATURA.data_emissao%TYPE
                               )
          RETURN SYS_REFCURSOR IS
    curs_faturas SYS_REFCURSOR;

BEGIN
    IF (data_inicio is null or data_fim is null) THEN
      OPEN curs_faturas FOR 
      SELECT f.NR_FATURA, f.DATA_EMISSAO, f.VALOR_BASE_PAGAR
        FROM FATURA f
        JOIN PAGAMENTO p ON p.NR_FATURA = f.NR_FATURA
        WHERE ESTADO != 'PAGO'
        ORDER BY f.DATA_EMISSAO;       
    END IF;

    RETURN curs_faturas;
END; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...