SET SERVEROUTPUT ON
DECLARE
n number;
dst_addr varchar2(11);
dat date;
sdat date;
attempt number;
finaldate date;
msgstate number;
state varchar2(20);
CURSOR DUALCursor IS
select
p_bs.f_getallStatus(sysdate-5,sysdate)
from
dual;
BEGIN
OPEN DUALCursor;
LOOP
FETCH DUALCursor INTO n, dst_addr, dat, sdat, attempt, finaldate, msgstate, state;
EXIT WHEN DUALCursor%NOTFOUND;
END LOOP;
CLOSE DUALCursor;
END;
pl sql cursor PLS-00386
Код:
При этом в документации типы описаны именно эти, и, что запрос возвращает курсор.
Цитата: koltaviy
Что делаю не так?
PLS-00386: type mismatch found at 'N' between FETCH cursor and INTO variables.
При этом в документации типы описаны именно эти, и, что запрос возвращает курсор.
Код:
SET SERVEROUTPUT ON
DECLARE
n number;
dst_addr varchar2(11);
dat date;
sdat date;
attempt number;
finaldate date;
msgstate number;
state varchar2(20);
CURSOR DUALCursor IS
select
p_bs.f_getallStatus(sysdate-5,sysdate)
from
dual;
BEGIN
OPEN DUALCursor;
LOOP
FETCH DUALCursor INTO n, dst_addr, dat, sdat, attempt, finaldate, msgstate, state;
EXIT WHEN DUALCursor%NOTFOUND;
END LOOP;
CLOSE DUALCursor;
END;
DECLARE
n number;
dst_addr varchar2(11);
dat date;
sdat date;
attempt number;
finaldate date;
msgstate number;
state varchar2(20);
CURSOR DUALCursor IS
select
p_bs.f_getallStatus(sysdate-5,sysdate)
from
dual;
BEGIN
OPEN DUALCursor;
LOOP
FETCH DUALCursor INTO n, dst_addr, dat, sdat, attempt, finaldate, msgstate, state;
EXIT WHEN DUALCursor%NOTFOUND;
END LOOP;
CLOSE DUALCursor;
END;
При этом в документации типы описаны именно эти, и, что запрос возвращает курсор.
Код:
SET SERVEROUTPUT ON
DECLARE
n number;
dst_addr varchar2(11);
dat date;
sdat date;
attempt number;
finaldate date;
msgstate number;
state varchar2(64);
ref1 sys_refcursor;
BEGIN
ref1 := p_bs.f_getallStatus(sysdate-5,sysdate);
LOOP
FETCH ref1 INTO n, dst_addr, dat, sdat, attempt, finaldate, msgstate, state;
EXIT WHEN ref1%NOTFOUND;
dbms_output.put_line('n='||n||', msgstate='||TO_CHAR(msgstate)||', state='||state);
END LOOP;
CLOSE ref1;
END;
DECLARE
n number;
dst_addr varchar2(11);
dat date;
sdat date;
attempt number;
finaldate date;
msgstate number;
state varchar2(64);
ref1 sys_refcursor;
BEGIN
ref1 := p_bs.f_getallStatus(sysdate-5,sysdate);
LOOP
FETCH ref1 INTO n, dst_addr, dat, sdat, attempt, finaldate, msgstate, state;
EXIT WHEN ref1%NOTFOUND;
dbms_output.put_line('n='||n||', msgstate='||TO_CHAR(msgstate)||', state='||state);
END LOOP;
CLOSE ref1;
END;