PLSQL中游标错误,ERROR ORA-06550

问题描述 投票:0回答:1

我是学PLSQL的,我想创建一个过程,但是我的游标出现了问题,不知道是什么原因,如果你能帮我看看我的代码,我将感激不尽。

看一下我的代码

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 ;
/ 
oracle stored-procedures plsql procedure oracle18c
1个回答
0
投票

你的代码中缺少了 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;
/
© www.soinside.com 2019 - 2024. All rights reserved.