PL / SQL ошибка с курсором, ОШИБКА ORA-06550 - PullRequest
0 голосов
/ 04 мая 2020

Я изучаю PL / SQL и пытаюсь создать процедуру, но у меня проблемы с курсором, и я не знаю, что это такое, если вы можете помочь с моим кодом, я ' буду благодарен.

посмотрите мой код

DECLARE
TYPE T_CURSOR IS REF CURSOR;
V_CURSOR T_CURSOR;
V_STATION STATION_DATA%ROWTYPE;
BEGIN
  OPEN V_CURSOR FOR SELECT * FROM STATION_DATA;
   FETCH V_CURSOR INTO V_STATION;
    EXIT WHEN V_CURSOR%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(
    'STATION NUMBER = '||V_STATION.STATION_NUMBER||
    'REPORT CODE = '||V_STATION.REPORT_CODE||
    'YEAR = '||V_STATION.YEAR||
    'MONTH = '||V_STATION.MONTH||
    'DAY = ' ||V_STATION.DAY||
    'DEW POINT = '||V_STATION.DEW_POINT||
    'STATION PRESSURE = '||V_STATION.STATION_PRESSURE||
    'VISIBILITY = '||V_STATION.VISIBILITY||
    'WIND SPEED = '||V_STATION.WIND_SPEED||
    'PRECIPATION = '||V_STATION.PRECIPATION||
    'TEMPERATURE = '||V_STATION.TEMPERATURE||
    'SNOW DEPTH = '||V_STATION.SNOW_DEPTH||
    'FOG = '||V_STATION.FOG||
    'RAIN = '||V_STATION.RAIN||
    'HAIL = '||V_STATION.HAIL||
    'THUNDER = '||V_STATION.THUNDER||
    'TORNADO = '||V_STATION.TORNADO
    );
    END LOOP    ;
  CLOSE V_CURSOR ;
 END ;
/ 

1 Ответ

0 голосов
/ 04 мая 2020

В вашем коде отсутствует оператор LOOP, а также код, который не нужен.

Вам нужно что-то вроде этого (см. Встроенные комментарии):

DECLARE
--    TYPE T_CURSOR IS REF CURSOR; -- YOU DON'T NEED THIS
    V_CURSOR    SYS_REFCURSOR; -- USE SYS_REFCURSOR
    V_STATION   STATION_DATA%ROWTYPE;
BEGIN
    OPEN V_CURSOR FOR SELECT *
                        FROM STATION_DATA;
    LOOP -- ADDED THIS
        FETCH V_CURSOR INTO V_STATION;
        EXIT WHEN V_CURSOR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(
                'STATION NUMBER = '||V_STATION.STATION_NUMBER||
                'REPORT CODE = '||V_STATION.REPORT_CODE||
                'YEAR = '||V_STATION.YEAR||
                'MONTH = '||V_STATION.MONTH||
                'DAY = ' ||V_STATION.DAY||
                'DEW POINT = '||V_STATION.DEW_POINT||
                'STATION PRESSURE = '||V_STATION.STATION_PRESSURE||
                'VISIBILITY = '||V_STATION.VISIBILITY||
                'WIND SPEED = '||V_STATION.WIND_SPEED||
                'PRECIPATION = '||V_STATION.PRECIPATION||
                'TEMPERATURE = '||V_STATION.TEMPERATURE||
                'SNOW DEPTH = '||V_STATION.SNOW_DEPTH||
                'FOG = '||V_STATION.FOG||
                'RAIN = '||V_STATION.RAIN||
                'HAIL = '||V_STATION.HAIL||
                'THUNDER = '||V_STATION.THUNDER||
                'TORNADO = '||V_STATION.TORNADO
                );
    END LOOP;
    CLOSE V_CURSOR;
END;
/
...